Share Extension 是 iOS 8 开发的,准确的说 Share Extension 只是一个寄存在 App 上的插件。通过沙盒实现Extension 和 App 之间的数据同步
1、 数据同步有三种方式
1、NSUserDefault // 比较适用于较小数组的存储,当数据大于20MB时,会造成界面卡顿,同步数据会有一定的延迟
代码:
// 注意这里的SHARE_APPGROUP为证书里设置的App Group
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:SHARE_APPGROUPS]; [defaults setValue:value forKey:key];
2、NSFileManager // NSFileManager 和 Core Data 可按个人习惯使用
代码:
[NSFileManger defaultManager] containerURLForSecurityApplicationGroupIdentifier:
3、CoreData
2、自定义界面,iOS系统提供了源生的系统界面,但是界面比较不美观,如果想自定义界面的话,只需在plist文件里面修改NSExtensionPrincipalClasss属性为自定义的类名即可,如下图
Extension01.png
同时注意界面之间的跳转方式为:
Extension02.png3、遇到的问题
1.在设置Share Extension 的NSExtensionActivationRule时,注意每一个属性的类型,如下图:
2.在 Apple 官网上配置 App Groups 时的ID即为 Share Extension 与 App 之间同步数据的key
Extension04.png同时该key也需要在App targets --- Capabilities --- App Groups设置,如下图:
Extension05.png3.倘若 App Share Extension 的名字为 ShareTarget, App 的 Bundle Identifier 为com.company.mobile, 那么 Share Extension 的 Bundle Identifier 就应该是: com.company.mobile.Share, 那么问题来了,缺少 Share 的描 Provisioning Profile,所以,应该在 Apple Deleloper上创建一个对应 Share 的 Provisioning Profile
Extension06.png
网友评论