系統(tǒng)推送的集成(七) —— 本地和遠程通知編程指南之你的App的通知 - 修改和顯示通知(五)

版本記錄

版本號 時間
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字典倾哺,其中包含alerttitlebody的子項。

有關實現(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

后記

本篇主要講述了修改和顯示通知悍手,感興趣的給個贊或者關注~~~~

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末帘睦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子坦康,更是在濱河造成了極大的恐慌竣付,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滞欠,死亡現(xiàn)場離奇詭異古胆,居然都是意外死亡,警方通過查閱死者的電腦和手機筛璧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門逸绎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人夭谤,你說我怎么就攤上這事棺牧。” “怎么了朗儒?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵颊乘,是天一觀的道長。 經常有香客問我醉锄,道長乏悄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任恳不,我火速辦了婚禮檩小,結果婚禮上,老公的妹妹穿的比我還像新娘妆够。我一直安慰自己识啦,他們只是感情好负蚊,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著颓哮,像睡著了一般家妆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上冕茅,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天伤极,我揣著相機與錄音,去河邊找鬼姨伤。 笑死哨坪,一個胖子當著我的面吹牛,可吹牛的內容都是我干的乍楚。 我是一名探鬼主播当编,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼徒溪!你這毒婦竟也來了忿偷?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤臊泌,失蹤者是張志新(化名)和其女友劉穎鲤桥,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渠概,經...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡茶凳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了播揪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贮喧。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖剪芍,靈堂內的尸體忽然破棺而出塞淹,到底是詐尸還是另有隱情,我是刑警寧澤罪裹,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站运挫,受9級特大地震影響状共,放射性物質發(fā)生泄漏。R本人自食惡果不足惜谁帕,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一峡继、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧匈挖,春花似錦碾牌、人聲如沸康愤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽征冷。三九已至,卻和暖如春誓琼,著一層夾襖步出監(jiān)牢的瞬間检激,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工腹侣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留叔收,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓傲隶,卻偏偏與公主長得像饺律,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子跺株,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內容