遠程消息推送處理場景有三種:分別是app還沒有運行、app在前臺運行以及app在后臺運行,下面介紹相關流程及三種場景下處理步驟
1.流程
(1)注冊通知
首先是在注冊遠程消息推送,需要注意的是ios8及以后的系統中注冊方法有所改變(同時證書設置以及push權限也需要開啟)。這一步的目的是,允許app接收遠程消息推送。
(2)綁定devicetoken
devicetoken相當于設備的一個標識,服務器根據這個標識來進行消息推送。
①當用戶同意app接收遠程消息推送后,手機會向apns發起一個請求去獲取devicetoken;
②apns收到請求,根據其相應流程及算法發送對應的devicetoken給手機;
③手機再將devicetoken傳遞給app;
④app再將devicetoken發送到后臺服務器進行保存。
后臺服務器以后就是根據devicetoken發送推送消息給apns,apns再根據devicetoken將消息推送到對應設備,設備再喚起app,顯示推送而來的消息。
(3)針對遠程推送消息進行處理
遠程推送消息發送過來時,點開消息常常會有一些針對性處理或流程,最常見的就是跳轉頁面等,這里不再展開,下面將介紹不同場景下接收到推送后的處理步驟。
2.不同場景下推送消息的流程
(1)app在前臺運行時收到推送
會調用“didreceiveremotenotification”方法,推送的數據在userinfo里,針對處理即可。
(2)app退出到后臺狀態時收到推送
屏幕上會出現通知提醒,如果點開消息進入app,app運行到前臺時會調用“didreceiveremotenotification”方法,這也就是之前為什么要區分一下applicationstate的原因,因為二者都是通過這一步來處理。
(3)app處于關閉退出狀態時收到推送
同樣屏幕上出現通知提醒,點開消息進入app,啟動時“didfinishlaunchingwithoptions”方法里的launchoptions對應uiapplicationlaunchoptionsremotenotificationkey部分內容不再為空,含有的即是推送內容,針對處理即可。
3.其它
(1)網絡狀況不佳時遠程消息推送情況
如果手機不在網的時候,apns會有一個qos的東西把消息保存很短的時間,等手機在網時再推送過來,當然離線時間久了,消息也就收不到了,但在實際中發現貌似網絡不佳的時候一般就收不到了。
如果手機離線時,服務器推送了多條消息,即時上線了收到消息,也只會收到最新的一條
(2)推送的內容格式
推送的內容都有固定格式和長度,包括title(ios8.2后增加的)、body、sound等,如果本地沒有設置對應的聲音文件,sound的值為default,收到推送的時候響起的是默認的提示音,并且推送消息的長度限制為256個字節(ios8中這一限制放大到2kb),具體參考local and remote notification programming guide中the notification payload這一節。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。