iOS Remote Notification遠(yuǎn)程消息推送處理
遠(yuǎn)程消息推送處理場景有三種:分別是app還沒有運(yùn)行、app在前臺(tái)運(yùn)行以及app在后臺(tái)運(yùn)行,下面介紹相關(guān)流程及三種場景下處理步驟
1.流程
(1)注冊通知
首先是在注冊遠(yuǎn)程消息推送,需要注意的是iOS8及以后的系統(tǒng)中注冊方法有所改變(同時(shí)證書設(shè)置以及push權(quán)限也需要開啟)。這一步的目的是,允許app接收遠(yuǎn)程消息推送。
(2)綁定deviceToken
deviceToken相當(dāng)于設(shè)備的一個(gè)標(biāo)識(shí),服務(wù)器根據(jù)這個(gè)標(biāo)識(shí)來進(jìn)行消息推送。
①當(dāng)用戶同意app接收遠(yuǎn)程消息推送后,手機(jī)會(huì)向APNs發(fā)起一個(gè)請求去獲取deviceToken;
②APNs收到請求,根據(jù)其相應(yīng)流程及算法發(fā)送對應(yīng)的deviceToken給手機(jī);
③手機(jī)再將deviceToken傳遞給app;
④app再將deviceToken發(fā)送到后臺(tái)服務(wù)器進(jìn)行保存。
后臺(tái)服務(wù)器以后就是根據(jù)deviceToken發(fā)送推送消息給APNs,APNs再根據(jù)deviceToken將消息推送到對應(yīng)設(shè)備,設(shè)備再喚起app,顯示推送而來的消息。
(3)針對遠(yuǎn)程推送消息進(jìn)行處理
遠(yuǎn)程推送消息發(fā)送過來時(shí),點(diǎn)開消息常常會(huì)有一些針對性處理或流程,最常見的就是跳轉(zhuǎn)頁面等,這里不再展開,下面將介紹不同場景下接收到推送后的處理步驟。
2.不同場景下推送消息的流程
(1)app在前臺(tái)運(yùn)行時(shí)收到推送
會(huì)調(diào)用“didReceiveRemoteNotification”方法,推送的數(shù)據(jù)在userInfo里,針對處理即可。
(2)app退出到后臺(tái)狀態(tài)時(shí)收到推送
屏幕上會(huì)出現(xiàn)通知提醒,如果點(diǎn)開消息進(jìn)入app,app運(yùn)行到前臺(tái)時(shí)會(huì)調(diào)用“didReceiveRemoteNotification”方法,這也就是之前為什么要區(qū)分一下applicationState的原因,因?yàn)槎叨际峭ㄟ^這一步來處理。
(3)app處于關(guān)閉退出狀態(tài)時(shí)收到推送
同樣屏幕上出現(xiàn)通知提醒,點(diǎn)開消息進(jìn)入app,啟動(dòng)時(shí)“didFinishLaunchingWithOptions”方法里的launchOptions對應(yīng)UIApplicationLaunchOptionsRemoteNotificationKey部分內(nèi)容不再為空,含有的即是推送內(nèi)容,針對處理即可。
3.其它
(1)網(wǎng)絡(luò)狀況不佳時(shí)遠(yuǎn)程消息推送情況
如果手機(jī)不在網(wǎng)的時(shí)候,APNs會(huì)有一個(gè)QoS的東西把消息保存很短的時(shí)間,等手機(jī)在網(wǎng)時(shí)再推送過來,當(dāng)然離線時(shí)間久了,消息也就收不到了,但在實(shí)際中發(fā)現(xiàn)貌似網(wǎng)絡(luò)不佳的時(shí)候一般就收不到了。
如果手機(jī)離線時(shí),服務(wù)器推送了多條消息,即時(shí)上線了收到消息,也只會(huì)收到最新的一條
(2)推送的內(nèi)容格式
推送的內(nèi)容都有固定格式和長度,包括title(iOS8.2后增加的)、body、sound等,如果本地沒有設(shè)置對應(yīng)的聲音文件,sound的值為default,收到推送的時(shí)候響起的是默認(rèn)的提示音,并且推送消息的長度限制為256個(gè)字節(jié)(iOS8中這一限制放大到2kb),具體參考Local and Remote Notification Programming Guide中The Notification Payload這一節(jié)。
本文已被整理到了《iOS推送教程》,歡迎大家學(xué)習(xí)閱讀。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- iOS如何獲取手機(jī)的Mac地址
- iOS、Mac OS X系統(tǒng)中編程實(shí)現(xiàn)漢字轉(zhuǎn)拼音的方法(超級(jí)簡單)
- WMI獲取硬件信息封裝函數(shù)方法(聯(lián)想臺(tái)式機(jī)出廠編號(hào) CPUID BIOS序列號(hào) 硬盤信息 顯卡信息 MAC地址)
- Nagios遠(yuǎn)程監(jiān)控安裝與配置詳解圖文
- iOS10 適配遠(yuǎn)程推送功能實(shí)現(xiàn)代碼
- iOS實(shí)現(xiàn)遠(yuǎn)程推送原理及過程
- iOS實(shí)現(xiàn)播放遠(yuǎn)程網(wǎng)絡(luò)音樂的核心技術(shù)點(diǎn)總結(jié)
- iOS10最新實(shí)現(xiàn)遠(yuǎn)程通知的開發(fā)教程詳解
- iOS開發(fā)之運(yùn)動(dòng)事件和遠(yuǎn)程控制
- iOS-Mac遠(yuǎn)程連接控制Window
相關(guān)文章
詳解iOS開發(fā)中的轉(zhuǎn)場動(dòng)畫和組動(dòng)畫以及UIView封裝動(dòng)畫
這篇文章主要介紹了iOS開發(fā)中的轉(zhuǎn)場動(dòng)畫和組動(dòng)畫以及UIView封裝動(dòng)畫,主要用到了CAAnimation類和UIView類,需要的朋友可以參考下2015-11-11iOS基于 UILabel實(shí)現(xiàn)文字添加描邊功能
這篇文章主要介紹了iOS基于 UILabel實(shí)現(xiàn)文字添加描邊功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-10-10