iOS開發筆記8:Remote Notification遠程消息推送處理

     遠程消息推送處理場景有三種:分別是app尚未運行、app在前臺運行以及app在後臺運行,下面介紹相關流程及三種場景下處理步驟算法

     1.流程

     (1)註冊通知    

     首先是在註冊遠程消息推送,須要注意的是iOS8及之後的系統中註冊方法有所改變(同時證書設置以及push權限也須要開啓)。這一步的目的是,容許app接收遠程消息推送。服務器

     

     (2)綁定deviceToken

      deviceToken至關於設備的一個標識,服務器根據這個標識來進行消息推送。網絡

      ①當用戶贊成app接收遠程消息推送後,手機會向APNs發起一個請求去獲取deviceToken;app

      ②APNs收到請求,根據其相應流程及算法發送對應的deviceToken給手機;ide

      ③手機再將deviceToken傳遞給app;ui

      ④app再將deviceToken發送到後臺服務器進行保存。spa

     後臺服務器之後就是根據deviceToken發送推送消息給APNs,APNs再根據deviceToken將消息推送到對應設備,設備再喚起app,顯示推送而來的消息。3d

     (3)針對遠程推送消息進行處理

       遠程推送消息發送過來時,點開消息經常會有一些針對性處理或流程,最多見的就是跳轉頁面等,這裏再也不展開,下面將介紹不一樣場景下接收到推送後的處理步驟。blog

       2.不一樣場景下推送消息的流程

     (1)app在前臺運行時收到推送

       會調用「didReceiveRemoteNotification」方法,推送的數據在userInfo裏,針對處理便可。it

     (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這一節。

相關文章
相關標籤/搜索