版本記錄
| 版本號(hào) | 時(shí)間 |
|---|---|
| V1.0 | 2018.07.11 |
前言
我們做APP很多時(shí)候都需要推送功能,以直播為例,如果你關(guān)注的主播開播了,那么就需要向關(guān)注這個(gè)主播的人發(fā)送開播通知,提醒用戶去看播,這個(gè)只是一個(gè)小的方面,具體應(yīng)用根據(jù)公司的業(yè)務(wù)邏輯而定。前面已經(jīng)花了很多篇幅介紹了極光推送,其實(shí)極光推送無非就是將我們客戶端和服務(wù)端做的很多東西封裝了一下,節(jié)省了我們很多處理邏輯和流程,這一篇開始,我們就利用系統(tǒng)的原生推送類結(jié)合工程實(shí)踐說一下系統(tǒng)推送的集成,希望我的講解能讓大家很清楚的理解它。感興趣的可以看上面幾篇。
1. 系統(tǒng)推送的集成(一) —— 基本集成流程(一)
2. 系統(tǒng)推送的集成(二) —— 推送遇到的幾個(gè)坑之BadDeviceToken問題(一)
3. 系統(tǒng)推送的集成(三) —— 本地和遠(yuǎn)程通知編程指南之你的App的通知 - 本地和遠(yuǎn)程通知概覽(一)
4. 系統(tǒng)推送的集成(四) —— 本地和遠(yuǎn)程通知編程指南之你的App的通知 - 管理您的應(yīng)用程序的通知支持(二)
5. 系統(tǒng)推送的集成(五) —— 本地和遠(yuǎn)程通知編程指南之你的App的通知 - 調(diào)度和處理本地通知(三)
6. 系統(tǒng)推送的集成(六) —— 本地和遠(yuǎn)程通知編程指南之你的App的通知 - 配置遠(yuǎn)程通知支持(四)
Modifying and Presenting Notifications - 修改和顯示通知
您可以使用應(yīng)用擴(kuò)展程序修改到達(dá)通知的內(nèi)容和展示。 要在遠(yuǎn)程通知到達(dá)之前修改其內(nèi)容,請(qǐng)使用通知服務(wù)應(yīng)用程序擴(kuò)展。 要更改通知內(nèi)容在屏幕上的顯示方式,請(qǐng)使用通知內(nèi)容應(yīng)用擴(kuò)展程序。
Modifying the Payload of a Remote Notification - 修改遠(yuǎn)程通知的Payload
使用通知服務(wù)應(yīng)用程序擴(kuò)展來修改遠(yuǎn)程通知的有效負(fù)載,然后再將其傳遞給用戶。遠(yuǎn)程通知源自服務(wù)器,該服務(wù)器可控制通知的配置和內(nèi)容。服務(wù)擴(kuò)展允許您的應(yīng)用在向用戶呈現(xiàn)數(shù)據(jù)之前更改服務(wù)器提供的有效負(fù)載數(shù)據(jù)。您使用服務(wù)擴(kuò)展來實(shí)現(xiàn)以下類型的行為:
- 解密以加密格式傳送的數(shù)據(jù)。
- 下載圖像或其他媒體文件,并將其作為附件添加到通知中。
- 更改通知的正文或標(biāo)題文本。
- 向通知添加線程標(biāo)識(shí)符或修改通知的userInfo字典的內(nèi)容。
To add a notification service app extension to your iOS app - 向您的iOS應(yīng)用添加通知服務(wù)應(yīng)用擴(kuò)展程序
- 在Xcode中,選擇
New> Target為項(xiàng)目添加新目標(biāo)。
在iOS> Application Extension部分中,選擇Notification Service Extension目標(biāo)。 - 點(diǎn)擊下一步。
- 指定應(yīng)用擴(kuò)展程序的名稱和其他詳細(xì)信息。
- 單擊完成。
Xcode為您的應(yīng)用項(xiàng)目添加了預(yù)配置的目標(biāo)。
Xcode提供的默認(rèn)通知服務(wù)擴(kuò)展目標(biāo)包含UNNotificationServiceExtension類的子類供您修改。使用didReceiveNotificationRequest:withContentHandler:方法創(chuàng)建和配置新的UNMutableNotificationContent對(duì)象。您可以對(duì)新內(nèi)容對(duì)象進(jìn)行任何更改,替換部分或全部原始內(nèi)容值。完成后,使用新的內(nèi)容對(duì)象調(diào)用提供的完成處理程序。系統(tǒng)會(huì)將您的新內(nèi)容集成到通知中并將其提供給用戶。
系統(tǒng)為您提供了有限的時(shí)間來修改通知并調(diào)用提供的完成處理程序,因此您應(yīng)該快速執(zhí)行任何任務(wù)。如果你的didReceiveNotificationRequest:withContentHandler:方法需要很長(zhǎng)時(shí)間來調(diào)用完成處理程序,系統(tǒng)會(huì)調(diào)用serviceExtensionTimeWillExpire方法給你一個(gè)完成修改的最后機(jī)會(huì)。如果您未及時(shí)調(diào)用完成處理程序,系統(tǒng)將顯示通知的原始內(nèi)容。
必須明確制作服務(wù)器發(fā)送的遠(yuǎn)程通知,以支持通知服務(wù)應(yīng)用擴(kuò)展程序的修改。不包含適當(dāng)修改的通知將直接發(fā)送給用戶,無需修改。為遠(yuǎn)程通知?jiǎng)?chuàng)建有效負(fù)載時(shí),服務(wù)器應(yīng)執(zhí)行以下操作:
- 包含值為1的
mutable-content鍵。 - 包含
alert字典,其中包含alert的title和body的子項(xiàng)。
有關(guān)實(shí)現(xiàn)通知服務(wù)應(yīng)用程序擴(kuò)展的方法的詳細(xì)信息,請(qǐng)參閱UNNotificationServiceExtension Class Reference。 有關(guān)為遠(yuǎn)程通知配置有效負(fù)載的信息,請(qǐng)參閱Creating the Remote Notification Payload。
Presenting Notifications Using a Custom Interface on iOS - 在iOS上使用自定義界面顯示通知
使用通知內(nèi)容應(yīng)用擴(kuò)展程序顯示應(yīng)用通知的自定義用戶界面。您可以使用此類型的擴(kuò)展來合并自定義內(nèi)容或使用與默認(rèn)界面不同的布局。例如,您可以使用此類型的擴(kuò)展來顯示與通知內(nèi)聯(lián)的圖像或媒體文件。
通知內(nèi)容應(yīng)用擴(kuò)展程序支持呈現(xiàn)與特定類別關(guān)聯(lián)的本地和遠(yuǎn)程通知。您可以使用UNNotificationContent對(duì)象的categoryIdentifier指定本地通知的類別。對(duì)于遠(yuǎn)程通知,您的服務(wù)器在有效負(fù)載的aps字典中包含一個(gè)具有適當(dāng)值的category密鑰。當(dāng)具有該類別的通知到達(dá)時(shí),系統(tǒng)將從您的擴(kuò)展加載視圖控制器,并將您的內(nèi)容合并到系統(tǒng)界面中。您可以使用通知內(nèi)容在視圖控制器出現(xiàn)在屏幕上之前對(duì)其進(jìn)行配置。
To add a notification content app extension to your iOS app - 向您的iOS應(yīng)用添加通知內(nèi)容應(yīng)用擴(kuò)展程序
- 在Xcode中,選擇
New> Target為項(xiàng)目添加新目標(biāo)。 - 在
iOS> Application Extension部分中,選擇Notification Content Extension目標(biāo)。 - 點(diǎn)擊下一步。
- 指定應(yīng)用擴(kuò)展程序的名稱和其他詳細(xì)信息。
- 單擊完成。
Xcode為您的應(yīng)用項(xiàng)目添加了預(yù)配置的目標(biāo)。
初始通知內(nèi)容應(yīng)用擴(kuò)展目標(biāo)被配置為呈現(xiàn)與單個(gè)類別相關(guān)聯(lián)的通知。您必須修改目標(biāo),以指定要為每個(gè)擴(kuò)展程序支持的通知類別。您可以使用目標(biāo)的Info.plist文件中的UNNotificationExtensionCategory鍵指定類別。將鍵的值設(shè)置為應(yīng)用程序在啟動(dòng)時(shí)注冊(cè)的UNNotificationCategory對(duì)象的identifier屬性中的相同字符串。
To support multiple notification categories with your app extension - 使用您的應(yīng)用擴(kuò)展程序支持多個(gè)通知類別
- 選擇通知內(nèi)容擴(kuò)展項(xiàng)目的
Info.plist文件。 - 展開
NSExtension字典以查看與擴(kuò)展相關(guān)的鍵。 - 展開
NSExtensionAttributes字典。 - 將
UNNotificationExtensionCategory鍵的類型更改為Array。 - 為擴(kuò)展程序處理的通知類別添加一個(gè)條目。
您可以在iOS應(yīng)用包中添加多個(gè)通知內(nèi)容應(yīng)用擴(kuò)展程序。系統(tǒng)只需要一個(gè)擴(kuò)展來支持給定的類別,因此您必須使用不同的值集配置每個(gè)擴(kuò)展的UNNotificationExtensionCategory鍵。
有關(guān)實(shí)現(xiàn)通知內(nèi)容應(yīng)用程序擴(kuò)展的更多信息,請(qǐng)參閱UNNotificationContentExtension Protocol Reference。
Presenting Notifications Using a Custom Interface on watchOS - 在watchOS上使用自定義界面顯示通知
WatchKit框架為使用自定義界面顯示通知提供直接支持。 WatchKit擴(kuò)展程序可能包含一個(gè)或多個(gè)通知界面控制器,以顯示到達(dá)的應(yīng)用程序的通知。 您可以使用這些界面控制器來顯示通知的內(nèi)容。 有關(guān)如何實(shí)現(xiàn)通知界面控制器的信息,請(qǐng)參閱App Programming Guide for watchOS。
后記
本篇主要講述了修改和顯示通知,感興趣的給個(gè)贊或者關(guān)注~~~~
