
UNNotificationServiceExtension(通知服務(wù)擴(kuò)展)是在收到通知后,展示通知前,做一些事情的。
UNNotificationContentExtension(通知內(nèi)容擴(kuò)展)給通知?jiǎng)?chuàng)建一個(gè)自定義的用戶界面
使用場(chǎng)景:實(shí)現(xiàn)支付寶語音開關(guān)通知場(chǎng)景
在iOS10以下的時(shí)候,可以在Appdelegate中對(duì)收到通知后使用NSUserDefault判斷是否開啟通知來打開語音
在iOS10以上的時(shí)候通過UNNotificationServiceExtension擴(kuò)展來實(shí)現(xiàn)是否播放語音
對(duì)于iOS應(yīng)用和其擴(kuò)展來說,想要實(shí)現(xiàn)數(shù)據(jù)共享的話需要開啟App Groups來進(jìn)行數(shù)據(jù)共享。App Groups 為同一個(gè) 開發(fā)商 的應(yīng)用或者擴(kuò)展定義了一組域,在這個(gè)域中同一個(gè) group 可以共享一些資源。

首先我們需要開啟App Group。在Capabilities中打開App Group,選擇主 Target,打開它的 Capabilities 選項(xiàng)卡,找到 App Groups 并打開開關(guān),然后添加一個(gè)你能記得的 group 名字,比如group.vocal。接下來你還需要為vocal這個(gè) Target 進(jìn)行同樣的配置,只不過不再需要新建 group,而是勾選剛才創(chuàng)建的 group 就行。
然后,使用下面的代碼,就可以實(shí)現(xiàn)讀寫共享的數(shù)據(jù)了
NSUserDefaults* userDefault = [[NSUserDefaults alloc] initWithSuiteName:@"group.vocal"];// SuiteName必須和上面Capabilities配置填寫的一致
在主Target項(xiàng)目中對(duì)這個(gè)進(jìn)行數(shù)據(jù)保存操作,我們就可以在擴(kuò)展中通過讀取該key數(shù)據(jù)進(jìn)而判斷是否開啟關(guān)閉語音提示
關(guān)于擴(kuò)展Debug調(diào)試?
https://github.com/liuyanhongwl/ios_common/blob/master/files/App-Extension-Tips.md