Push的工作機(jī)制可以簡單的概括為下圖

圖中,Provider是指某個(gè)iPhone軟件的Push服務(wù)器,這篇文章我將使用.net作為Provider。
APNS是Apple Push Notification Service(Apple Push服務(wù)器)的縮寫,是蘋果的服務(wù)器。
上圖可以分為三個(gè)階段:
第一階段:.net應(yīng)用程序把要發(fā)送的消息、目的iPhone的標(biāo)識打包,發(fā)給APNS。
第二階段:APNS在自身的已注冊Push服務(wù)的iPhone列表中,查找有相應(yīng)標(biāo)識的iPhone,并把消息發(fā)到iPhone。
第三階段:iPhone把發(fā)來的消息傳遞給相應(yīng)的應(yīng)用程序, 并且按照設(shè)定彈出Push通知。
首先是應(yīng)用程序注冊消息推送。IOS跟APNS Server要deviceToken。應(yīng)用程序接受deviceToken。應(yīng)用程序?qū)eviceToken發(fā)送給PUSH服務(wù)端程序。服務(wù)端程序向APNS服務(wù)發(fā)送消息。APNS服務(wù)將消息發(fā)送給iPhone應(yīng)用程序。
無論是iPhone客戶端跟APNS,還是Provider和APNS都需要通過證書進(jìn)行連接的。下面我介紹一下幾種用到的證書。
iOS 在系統(tǒng)級別有一個(gè)推送服務(wù)程序使用 5223 端口。使用這個(gè)端口的協(xié)議源于 Jabber 后來發(fā)展為 XMPP ,被用于 Gtalk 等 IM 軟件中。
iOS 的推送,可以理解為:蘋果服務(wù)器朝手機(jī)后臺掛的一個(gè)IM服務(wù)程序發(fā)送的消息。然后,系統(tǒng)根據(jù)該IM消息識別告訴哪個(gè)Apps具體發(fā)生了什么事。最后,系統(tǒng)分別通知這些 Apps。