一澈蟆、簡單介紹:
iOS 10 中 通知 有了新的改變:?
? ? ?首先:第一個更新點(diǎn)就是:新加了一個獨(dú)立框架:UserNotification.framework,(之前一直存在于UIKit.framework中),在iOS 10中廢棄了 UILocalNotification(也在UIKit.framework中)這個類役拴,采用了全新的UserNotifications.framework來推送通知籍铁,從此推送通知也有了自己的標(biāo)簽UN(這待遇真是沒別人了),以及對推送功能的一系列增強(qiáng)改進(jìn)(兩個extension (?k?st?n?(?)n,延展)和界面的體驗(yàn)優(yōu)化)厘擂。
? ? 我們從字面翻譯 UserNotification.framework 應(yīng)該翻譯成“用戶通知框架”,而通常大家所了解的“推送”翻譯成英文應(yīng)該是“Push”济锄,?“Push”其實(shí)只是[通知]觸發(fā)的一種方式绒净,而[通知]其實(shí)是操作系統(tǒng)層面的一種UI展示。
蘋果官方文檔中Notification分為兩類: ??
- Remote (遠(yuǎn)程洽议,即Push方式宗收,(r??m??t,遙遠(yuǎn)的))
- Local (本地,通知由本地事件觸發(fā)亚兄,iOS10中有三種不同的觸發(fā) "Trigger"(?tr?ɡ?r ?觸發(fā)因素)方式混稽,下面有詳細(xì)說明)
所以,[推送]只是[通知]的一種觸發(fā)方式审胚,
? ? ? ? 而從iOS迭代更新的歷史特征中看匈勋,[通知]應(yīng)該是是被蘋果作為一個重點(diǎn)內(nèi)容來延展的。( ? “推送通知”從最初的單純展示和簡單回調(diào)膳叨,到Backgroud的支持洽洁,以及后來整體的Payload(?pe??lo?d裝載量)的長度由256字節(jié)擴(kuò)展到2K再到4K,再到這次iOS10 的獨(dú)立框架和豐富的特性更新; //?或者換一個角度來說:從iOS3開始出現(xiàn)推送通知,每一年都會更新一些新的用法.?到iOS7出現(xiàn)的Silent remote notifications(遠(yuǎn)程靜默推送)(?s??l?nt,無聲的),?接著iOS8出現(xiàn)的Category(分類,也可稱之為快捷回復(fù)), ?之后iOS9出現(xiàn)的Text Input action(文本框快捷回復(fù)). ?而現(xiàn)在iOS10,蘋果對遠(yuǎn)程通知和本地通知進(jìn)行了大范圍的更新. iOS10推出了全新的UserNotifications框架(iOS10之前從屬于UIKit框架). ?并且新的推送通知框架,整合了本地推送和遠(yuǎn)程推送的點(diǎn)擊處理方法,使得以前專門處理推送點(diǎn)擊的方法只能處理靜默推送了.?所以不難看出“通知”改變也是蠻大的菲嘴。
(注:通知就代表本地通知饿自,推送就代表遠(yuǎn)程服務(wù)器的推送。)
iOS 10中改變?nèi)缦拢?/p>
1龄坪、Familiar API with feature parity ?//相同的特性使用類似API(之前的功能API使用方法類似但是還是稍有改變)
2昭雌、Expanded content //內(nèi)容擴(kuò)展(支持附件和展示更多內(nèi)容)
3、Same code path for local and remote notification handling ?//本地通知和遠(yuǎn)程通知操作代碼在相同調(diào)用路徑(合并代理方法)
4健田、Simplified delegate methods //簡化代理方法
5烛卧、Better notification management ? ?//更好的通知管理(支持通知查、改妓局、刪总放;增強(qiáng)本地通知管理雳旅,增加日歷與地理位置事件的觸發(fā))
6、In-app presentation option //應(yīng)用內(nèi)通知展示(之前App在前臺的情況下收到通知不會UI展示)
7间聊、Schedule and handle notifications in extensions ??//在Extensions中規(guī)劃和操作通知(使更新通知內(nèi)容和刪除誤發(fā)或過期的通知內(nèi)容成為可能攒盈,另一個重要場景為端到端加密)
8、Notification Extensions //引入通知Extensions
二哎榴、從手機(jī)端角度(具體展示)來看“通知更新”
1型豁、增加Subtitle
Subtitle樣式和展示位置如圖一所示:
Subtitle的加入給內(nèi)容類App帶來了福音,交給優(yōu)秀編輯和策劃去使用應(yīng)該是一項(xiàng)利器尚蝌。
2迎变、增加Attachments(??t?t?m?nts 附加裝置 附件)
通過類似之前的content_available參數(shù)的mutable-content參數(shù)來控制是否增加Attachments,需要開發(fā)者實(shí)現(xiàn)NotificationServiceExtension來展示帶有Attachments的通知飘言,需要注意的一點(diǎn)是衣形,本地通知的話只能使用本地的資源,遠(yuǎn)程通知需要服務(wù)端發(fā)送URL給NotificationServiceExtension去預(yù)先執(zhí)行下載操作姿鸿,當(dāng)然如果在網(wǎng)絡(luò)不太通暢的情況下蘋果也提供了超時時間和超時之后的后續(xù)操作讓開發(fā)者在這種情況下也能適當(dāng)?shù)恼故就ㄖ晃猓瑥亩岣咄ㄖ换ンw驗(yàn)。?Attachments的加入也可以讓你更好的對發(fā)給用戶的通知進(jìn)行分類苛预。如下圖:
3句狼、新增本地通知Triggers(?tr?ɡ?r 觸發(fā)因素)
在本地通知新增了兩種新的Triggers,
(1)就是日歷和地理位置热某。日歷的話就是讓開發(fā)者可以根據(jù)指定的日期和時間來展示本地通知腻菇,并且支持循環(huán)條件,比如“每周二上午十一點(diǎn)”這種條件昔馋。
(2)地理位置的話就是在進(jìn)入或者離開指定區(qū)域來觸發(fā)這條本地通知筹吐,該特性讓iOS通知的地理圍欄觸發(fā)有了實(shí)現(xiàn)的可能,比如“某品牌App在你進(jìn)入該品牌線下店鋪的范圍內(nèi)即展示最新優(yōu)惠信息”等秘遏。
典型場景:循環(huán)提醒丘薛、地理圍欄
4、內(nèi)容擴(kuò)展顯示
如果設(shè)備支持3DTouch的話用力按壓通知即可進(jìn)入內(nèi)容擴(kuò)展頁面垄提,此頁面會可以由開發(fā)者自定義展示內(nèi)容榔袋,可以是之前Attachments的內(nèi)容比如圖片視頻,也可以是開發(fā)者自己定義的布局內(nèi)容铡俐,同時也支持在內(nèi)容擴(kuò)展頁面增加更多的自定義ActionButton凰兑。但是,個人認(rèn)為有一些遺憾的是擴(kuò)展內(nèi)容幾乎不支持交互审丘,交互就只能放到ActionButton里面了吏够。如下圖三 圖四:
5、通知的查、改锅知、刪
實(shí)現(xiàn)該功能需要有一個必要參數(shù)就是構(gòu)建通知的identifer播急,后續(xù)的查改刪操作都是根據(jù)此參數(shù)去執(zhí)行的。 ?典型的應(yīng)用場景:賽事比分變更售睹、通知撤回 ?如圖:
三桩警、對于開發(fā)者來說
6、增加Service Extension
讓App開發(fā)者可以在展示通知之前增加一層處理邏輯昌妹,從而使端到端加密成為可能捶枢,也就意味著經(jīng)由蘋果的服務(wù)器的通知內(nèi)容可以是完全的密文,在這之前iOS上實(shí)現(xiàn)通知內(nèi)容加密是沒有任何可能的飞崖。 ?典型應(yīng)用場景:端到端加密烂叔、添加Attachments ?如圖六:
7、獲取通知相關(guān)設(shè)置信息API
可以通過API獲取到用戶設(shè)置該App相關(guān)于推送通知的設(shè)置的詳細(xì)列表固歪,該信息的統(tǒng)計(jì)可以讓App的開發(fā)者更好的根據(jù)用戶的通知使用習(xí)慣來改進(jìn)通知的策略蒜鸡。如圖7:
8、增加應(yīng)用內(nèi)通知展示API
提供官方的應(yīng)用內(nèi)收到APNs通知并做UI展示的API牢裳,在此之前如果想做此類功能需要開發(fā)者自己開發(fā)功能逢防,此API的優(yōu)勢在于讓開發(fā)者更簡單的實(shí)現(xiàn)應(yīng)用內(nèi)展示通知的功能并且統(tǒng)一點(diǎn)擊通知之后的事件。
(以上對大牛們的總結(jié)以及添加了自己的看法贰健,希望對大家的技術(shù)有所幫助0摹)