iPhone Push

iPhone Push(推送功能)的工作機制可以簡單的概括為右圖,Provider是指某個iPhone軟體的Push伺服器。 APNS 是Apple Push Notification Service(蘋果推送服務)的縮寫,下文統一使用該縮寫。

基本介紹

  • 中文名推送功能
  • 外文名:iPhone Push
  • 伺服器:Push伺服器
  • 階段:三個
Push原理,Push認證,物理連線上的認證,基於token(令牌)的認證,

Push原理

iphone push機制iphone push機制
整個過程可以分為三個階段,下面用大家常用的聊天客戶端BeejiveIM來說明。(BeejiveIM是一款支持多賬戶登錄的支持Push的 iPhone聊天客戶端,支持MSNGoogle Talk等)
此時Provider為BeejiveIM伺服器,如果在 BeejiveIM上登入MSN,其實軟體是先把登錄信息傳送到BeejiveIM伺服器,再通過其伺服器來登入MSN。因此,當我關 閉了BeejiveIM,BeejiveIM伺服器會繼續為我登入MSN,此時如果有人對我的MSN賬戶傳送了訊息,那么就會觸發Push。此時:
第一階段:BeejiveIM伺服器把要傳送的訊息、目的iPhone的標識打包,發給APNS。
第二階段:APNS在自身的已註冊Push服務 的iPhone列表中,查找有相應標識的iPhone,並把訊息發到iPhone。
第三階段:iPhone把發來的訊息傳遞給相應的應用程式, 並且按照設定彈出Push通知。

Push認證

許多朋友說Push不能用。其中一大部分,就是在認證階段就出了問題。這裡所說的認證機制,實際上包含兩層。一層是物理連線上的認證,另一層則才是涉及到iPhone 設備令牌的認證。
物理連線上的認證:SSL/TLS連結物理連線上的認證:SSL/TLS連結

物理連線上的認證

iPhone在開啟Push的時候,會連線 APNS建立一條TLS加密連結即:SSL/TLS連結。每一台正常的iPhone都有一個獨有的設備證書,而APNS也有一個伺服器證書。兩者建立的時候,會驗證彼此的證書有 效性。
TLS連結一旦建立,在沒有數據的情況下,只需要每隔15分鐘進行一次保活的握手,因此幾乎不占流量。而 一旦因為意外原因導致連結中斷,iPhone會不斷重新嘗試建立TLS連結,直到成功。

基於token(令牌)的認證

APNS判斷Push推送訊息該發給哪台iPhone的依據是一個“目的iPhone的標識”,這個 標識就是device token(設備令牌)。設備令牌是每次建立TLS 連線時,APNS通過前一層次(TLS層)里我們提到的每台正常的iPhone唯一的設備證書(unique device certificate),並用令牌密鑰(token key)加密生成的。
基於token(令牌)的認證基於token(令牌)的認證
在令牌生成了之後,APNS會把設備令牌(device token)返回給iPhone,而對應的Push應用程式(如BeejiveIM),則把返回來的設備令牌(device token)直接傳送給Provider(如BeejiveIM伺服器)。這樣,當Provider有Push訊息要傳送時,就會把對應 帳號的設備令牌(device token)和訊息一起傳送給APNS,而APNS再依據設備令牌(device token),找到相應TLS連結的iPhone,並傳送相應的Push訊息。
iPhone Push
最重要的部分——每台 iPhone獨有的設備證書和密鑰的來歷,正常的iPhone刷系統之後,是沒有設備證書和密鑰的。這就是為什麼iPhone會需要連線到 iTunes上進行激活——激活過程中,Apple會分配給每台iPhone獨一無二的設備證書(device certificate)和密鑰(key)。

相關詞條

熱門詞條

聯絡我們