一、扩展简介
-
简介
因为 iOS 中系统安全的考虑,所以应用之间的数据是通过沙盒模式来存储的.在这种条件下,很难做到应用之间的数据共享,想要做到功能共享就更加的困难.从 iOS5 就开始了应用的扩展,那个时候仅仅能够把相册中的图片分享到 Tweeter , 到了 iOS6 中也只是能够分享到FackBook.
-
作用
之前提到了 App Extension 就是为了实现应用之间的数据共享或者功能共享,也许这个时候我举几个例子大家会比较明白.当我们想要分享的时候,如果是分享什么东西.比如QQ分享,微信分享。这个时候我们可以通过腾讯官方文档的 API 能够做到,但是我们也可以在不使用那些框架的情况完成,比如说 Share extensions (分享扩展).下面是一个 Demo 的截图,看起来能够比较直观,待会我也会做一个小的 Demo, 大家有兴趣的可以看看。
-
分类
上面既然提到了一个 Share extensions (分享扩展),那么就还有别的扩展,这里我给大家列出一些扩展,可能会有遗漏,也没有具体都向大家介绍,简单列举出来,以后会慢慢深究其中的一些东西,大家如果有兴趣,可以继续调研.
1.Today extensions(今日扩展):
2.Share extensions(分享扩展):
3.Action extensions(行为扩展):
4.Photo Editing extensions (图片编辑扩展):
5.Document Provider extensions (文件提供者扩展):
6.Custom Keyboard extensions(自定义键盘扩展):
二、App Extension 的工作原理, 声明周期
-
工作原理:
扩展是一个独立的构成,与其相关的是宿主APP和主机APP,宿主APP是扩展存放的地方,与扩展可以实现资源共享,主机APP是扩展运行的程序.
有那么一种情况,应用扩展能够直接和主机APP进行通讯,但是不能和宿主APP进行通讯,有时候我们在运行应用扩展的时候,可能主机APP都没有打开.就好比我们用 Share extensions(分享扩展) 去进行分享的时候,我们都不用打开微信,或者QQ,就能够分享成功.在我们下一次打开微信或者QQ的时候就能看到我们之前分享的状态了.
-
生命周期
应用扩展是从 host app 发出一个 request 请求之后, app extension 响应了这事件, 在 response 只有结束.
-
Info.plist
应用扩展创建之后会有自己的info.plist文件,info.plist文件中包含一个NSExtension作为key的字典,NSExtension中的内容根据每个扩展点的类型而各不相同,但是其中都必须包含NSExtensionPointIdentifier 这个key,对应的是扩展点的类型。NSExtension中还可以通过NSExtensionActivationRule 这个key对应的值来包含什么时候显示这些扩展的规则,通过这些规则,来判定用户什么时候会唤起你的扩展。 还有一个必须声明的是NSExtensionMainStoryboard 和NSExtensionPrincipalClass 中的某一个key,或者同时声明两个,代表的是用storyboard还是class来作为你的应用扩展入口
三、总结
这次为了自己学习做了一个简单的总结,也希望和大家分享,不好的地方希望大家指出,在未来几天内,会继续往着这个方向在学习一些东西.