版本記錄
版本號 | 時間 |
---|---|
V1.0 | 2018.07.11 |
前言
我們做APP很多時候都需要推送功能缓苛,以直播為例,如果你關注的主播開播了邓深,那么就需要向關注這個主播的人發(fā)送開播通知未桥,提醒用戶去看播,這個只是一個小的方面芥备,具體應用根據(jù)公司的業(yè)務邏輯而定冬耿。前面已經花了很多篇幅介紹了極光推送,其實極光推送無非就是將我們客戶端和服務端做的很多東西封裝了一下萌壳,節(jié)省了我們很多處理邏輯和流程亦镶,這一篇開始日月,我們就利用系統(tǒng)的原生推送類結合工程實踐說一下系統(tǒng)推送的集成,希望我的講解能讓大家很清楚的理解它缤骨。感興趣的可以看上面幾篇山孔。
1. 系統(tǒng)推送的集成(一) —— 基本集成流程(一)
2. 系統(tǒng)推送的集成(二) —— 推送遇到的幾個坑之BadDeviceToken問題(一)
3. 系統(tǒng)推送的集成(三) —— 本地和遠程通知編程指南之你的App的通知 - 本地和遠程通知概覽(一)
4. 系統(tǒng)推送的集成(四) —— 本地和遠程通知編程指南之你的App的通知 - 管理您的應用程序的通知支持(二)
5. 系統(tǒng)推送的集成(五) —— 本地和遠程通知編程指南之你的App的通知 - 調度和處理本地通知(三)
6. 系統(tǒng)推送的集成(六) —— 本地和遠程通知編程指南之你的App的通知 - 配置遠程通知支持(四)
Modifying and Presenting Notifications - 修改和顯示通知
您可以使用應用擴展程序修改到達通知的內容和展示。 要在遠程通知到達之前修改其內容荷憋,請使用通知服務應用程序擴展台颠。 要更改通知內容在屏幕上的顯示方式,請使用通知內容應用擴展程序勒庄。
Modifying the Payload of a Remote Notification - 修改遠程通知的Payload
使用通知服務應用程序擴展來修改遠程通知的有效負載串前,然后再將其傳遞給用戶。遠程通知源自服務器实蔽,該服務器可控制通知的配置和內容荡碾。服務擴展允許您的應用在向用戶呈現(xiàn)數(shù)據(jù)之前更改服務器提供的有效負載數(shù)據(jù)。您使用服務擴展來實現(xiàn)以下類型的行為:
- 解密以加密格式傳送的數(shù)據(jù)局装。
- 下載圖像或其他媒體文件坛吁,并將其作為附件添加到通知中。
- 更改通知的正文或標題文本铐尚。
- 向通知添加線程標識符或修改通知的userInfo字典的內容拨脉。
To add a notification service app extension to your iOS app - 向您的iOS應用添加通知服務應用擴展程序
- 在Xcode中,選擇
New> Target
為項目添加新目標宣增。
在iOS> Application Extension
部分中玫膀,選擇Notification Service Extension
目標。 - 點擊下一步爹脾。
- 指定應用擴展程序的名稱和其他詳細信息帖旨。
- 單擊完成。
Xcode為您的應用項目添加了預配置的目標灵妨。
Xcode提供的默認通知服務擴展目標包含UNNotificationServiceExtension
類的子類供您修改解阅。使用didReceiveNotificationRequest:withContentHandler:方法創(chuàng)建和配置新的UNMutableNotificationContent對象。您可以對新內容對象進行任何更改泌霍,替換部分或全部原始內容值货抄。完成后,使用新的內容對象調用提供的完成處理程序烹吵。系統(tǒng)會將您的新內容集成到通知中并將其提供給用戶碉熄。
系統(tǒng)為您提供了有限的時間來修改通知并調用提供的完成處理程序,因此您應該快速執(zhí)行任何任務肋拔。如果你的didReceiveNotificationRequest:withContentHandler:
方法需要很長時間來調用完成處理程序锈津,系統(tǒng)會調用serviceExtensionTimeWillExpire方法給你一個完成修改的最后機會。如果您未及時調用完成處理程序凉蜂,系統(tǒng)將顯示通知的原始內容琼梆。
必須明確制作服務器發(fā)送的遠程通知性誉,以支持通知服務應用擴展程序的修改。不包含適當修改的通知將直接發(fā)送給用戶茎杂,無需修改错览。為遠程通知創(chuàng)建有效負載時,服務器應執(zhí)行以下操作:
- 包含值為1的
mutable-content
鍵煌往。 - 包含
alert
字典倾哺,其中包含alert
的title
和body
的子項。
有關實現(xiàn)通知服務應用程序擴展的方法的詳細信息刽脖,請參閱UNNotificationServiceExtension Class Reference羞海。 有關為遠程通知配置有效負載的信息,請參閱Creating the Remote Notification Payload曲管。
Presenting Notifications Using a Custom Interface on iOS - 在iOS上使用自定義界面顯示通知
使用通知內容應用擴展程序顯示應用通知的自定義用戶界面却邓。您可以使用此類型的擴展來合并自定義內容或使用與默認界面不同的布局。例如院水,您可以使用此類型的擴展來顯示與通知內聯(lián)的圖像或媒體文件腊徙。
通知內容應用擴展程序支持呈現(xiàn)與特定類別關聯(lián)的本地和遠程通知。您可以使用UNNotificationContent
對象的categoryIdentifier指定本地通知的類別檬某。對于遠程通知撬腾,您的服務器在有效負載的aps
字典中包含一個具有適當值的category
密鑰。當具有該類別的通知到達時橙喘,系統(tǒng)將從您的擴展加載視圖控制器时鸵,并將您的內容合并到系統(tǒng)界面中。您可以使用通知內容在視圖控制器出現(xiàn)在屏幕上之前對其進行配置厅瞎。
To add a notification content app extension to your iOS app - 向您的iOS應用添加通知內容應用擴展程序
- 在Xcode中,選擇
New> Target
為項目添加新目標初坠。 - 在
iOS> Application Extension
部分中和簸,選擇Notification Content Extension
目標。 - 點擊下一步碟刺。
- 指定應用擴展程序的名稱和其他詳細信息锁保。
- 單擊完成。
Xcode為您的應用項目添加了預配置的目標半沽。
初始通知內容應用擴展目標被配置為呈現(xiàn)與單個類別相關聯(lián)的通知爽柒。您必須修改目標,以指定要為每個擴展程序支持的通知類別者填。您可以使用目標的Info.plist
文件中的UNNotificationExtensionCategory
鍵指定類別浩村。將鍵的值設置為應用程序在啟動時注冊的UNNotificationCategory
對象的identifier屬性中的相同字符串。
To support multiple notification categories with your app extension - 使用您的應用擴展程序支持多個通知類別
- 選擇通知內容擴展項目的
Info.plist
文件占哟。 - 展開
NSExtension
字典以查看與擴展相關的鍵心墅。 - 展開
NSExtensionAttributes
字典酿矢。 - 將
UNNotificationExtensionCategory
鍵的類型更改為Array
。 - 為擴展程序處理的通知類別添加一個條目怎燥。
您可以在iOS應用包中添加多個通知內容應用擴展程序瘫筐。系統(tǒng)只需要一個擴展來支持給定的類別,因此您必須使用不同的值集配置每個擴展的UNNotificationExtensionCategory
鍵铐姚。
有關實現(xiàn)通知內容應用程序擴展的更多信息策肝,請參閱UNNotificationContentExtension Protocol Reference。
Presenting Notifications Using a Custom Interface on watchOS - 在watchOS上使用自定義界面顯示通知
WatchKit
框架為使用自定義界面顯示通知提供直接支持隐绵。 WatchKit擴展程序可能包含一個或多個通知界面控制器驳糯,以顯示到達的應用程序的通知。 您可以使用這些界面控制器來顯示通知的內容氢橙。 有關如何實現(xiàn)通知界面控制器的信息酝枢,請參閱App Programming Guide for watchOS。
后記
本篇主要講述了修改和顯示通知悍手,感興趣的給個贊或者關注~~~~