UNNotificationServiceExtension(通知服务扩展)是在收到通知后,展示通知前,做一些事情的。
UNNotificationContentExtension(通知内容扩展)给通知创建一个自定义的用户界面
使用场景:实现支付宝语音开关通知场景
在iOS10以下的时候,可以在Appdelegate中对收到通知后使用NSUserDefault判断是否开启通知来打开语音
在iOS10以上的时候通过UNNotificationServiceExtension扩展来实现是否播放语音
对于iOS应用和其扩展来说,想要实现数据共享的话需要开启App Groups来进行数据共享。App Groups 为同一个 开发商 的应用或者扩展定义了一组域,在这个域中同一个 group 可以共享一些资源。
首先我们需要开启App Group。在Capabilities中打开App Group,选择主 Target,打开它的 Capabilities 选项卡,找到 App Groups 并打开开关,然后添加一个你能记得的 group 名字,比如group.vocal。接下来你还需要为vocal这个 Target 进行同样的配置,只不过不再需要新建 group,而是勾选刚才创建的 group 就行。
然后,使用下面的代码,就可以实现读写共享的数据了
NSUserDefaults* userDefault = [[NSUserDefaults alloc] initWithSuiteName:@"group.vocal"];// SuiteName必须和上面Capabilities配置填写的一致
在主Target项目中对这个进行数据保存操作,我们就可以在扩展中通过读取该key数据进而判断是否开启关闭语音提示
关于扩展Debug调试
https://github.com/liuyanhongwl/ios_common/blob/master/files/App-Extension-Tips.md