iOS 扩展(Extension)概要篇

是iOS 8加入的一个强大功能,可以通过系统给我们的扩展接入点,来为系统的服务提供某些附加的功能,

iOS 8扩展的接入点有以下几个:
今日(Today)- 在下拉通知的“今天”的界面中添加一个小插件
分享(Share)- 点击分享按钮后,将网站或者图片通过应用分享
操作(Action)- 点击Action按钮后发送内容到应用
图片编辑(Photo Editing)- 在系统的照片应用中提供编辑的功能
文档管理(Document Provider)- 提供和管理文件内容
自定义键盘(Custom keyboard)- 自定义键盘和输入法

iOS 9 新增了4个:
音频单元(Audio Unit)- 为音乐App提供扩展功能,例如GarageBand
Spotlight索引(Spotlight Index)- Spotlight搜索扩展
共享的链接(Shared Links)- Safair共享的连接扩展
广告拦截(Content Blocker)- Safair广告拦截扩展

需要注意的几件事:

1、扩展在 iOS 中是不能以单独的形式存在,是随着容器 App(Container App)一起打包提供的。
2、扩展的生命周期和容器 App(Container App)本身的生命周期是独立的,它们是两个独立的进程,默认情况下互相不应该知道对方的存在。也就是说,扩展本身就是一个小型的App,App id也与容器App不一样。
3、提供扩展的方式是在 App 的项目中加入相应的扩展的 Target
4、扩展应该保持轻巧迅速,并且专注功能单一,在不打扰或者中断用户使用当前应用的前提下完成自己的功能点。

扩展和应用的交互:

上面提到了,扩展和容器应用是个独立的App,但是扩展可以共享容器应用本身的逻辑、界面和数据
1、使用iOS 8 新引入的自制 framework 的方式来组织需要重用的代码,这样在链接 framework 后容器App 和扩展就都能使用相同的代码了。
2、通过开启 App Groups 和进行相应的配置来开启在两个进程间的数据共享。这包括了使用NSUserDefaults进行小数据的共享,或者使用NSFileCoordinator和NSFilePresenter甚至是 CoreData 和 SQLite 来进行更大的文件或者是更复杂的数据交互。
3、可通过自定义的 url scheme ,从扩展向应用反馈数据和交互。

猜你喜欢

转载自blog.csdn.net/weixin_40873814/article/details/78957478