iOS消息推送的工作機制可以簡單的用下圖來概括:
Provider是指某個iPhone軟件的Push服務(wù)器,,APNS是Apple Push Notification Service的縮寫,,是蘋果的服務(wù)器,。
上圖可以分為三個階段: 第一階段:應(yīng)用程序把要發(fā)送的消息,、目的iPhone的標識打包,,發(fā)給APNS。 第二階段:APNS在自身的已注冊Push服務(wù)的iPhone列表中,,查找有相應(yīng)標識的iPhone,,并把消息發(fā)送到iPhone,。 第三階段:iPhone把發(fā)來的消息傳遞給相應(yīng)的應(yīng)用程序,,并且按照設(shè)定彈出Push通知,。
從上圖我們可以看到: 1、應(yīng)用程序注冊消息推送,。 2,、iOS從APNS Server獲取device token,應(yīng)用程序接收device token,。 3,、應(yīng)用程序?qū)evice token發(fā)送給PUSH服務(wù)端程序。 4,、服務(wù)端程序向APNS服務(wù)發(fā)送消息,。 5、APNS服務(wù)將消息發(fā)送給iPhone應(yīng)用程序,。
無論是iPhone客戶端和APNS,,還是Provider和APNS,都需要通過證書進行連接,。
下面我介紹一下幾種用到的證書,。
一、CSR文件
1,、生成Certificate Signing Request(CSR)
2,、填寫你的郵箱和常用名稱,并選擇保存到硬盤,。
點擊繼續(xù):
這樣就在本地生成了一個Push.certSigningRequest文件,。
二、p12文件
1,、導(dǎo)出密鑰,。
2、輸入你的密碼,。
這樣就生成了一個Push.p12文件,。
三、SSL certificate文件
1,、用你付過費的賬號登錄到iOS Provisioning Portal,,并新建一個App ID,這個過程可以參考:iOS應(yīng)用的真機調(diào)試,,這樣就會生成下面這條記錄:
2,、點擊右側(cè)的Configure:
3、點擊Development Push SSL Certificate一行后的Configure:
4,、點擊Continue:
5,、選擇前面生成好的Push.certSigningRequest文件,,點擊Generate,出現(xiàn)如下所示的頁面:
6,、點擊Continue:
7,、點擊Download,并將文件命名為aps_developer_identity.cer,。
8,、點擊Done,你會發(fā)現(xiàn)狀態(tài)變成了Enabled:
注意:有的App ID的Apple Push Notification service列是灰色的,,并且不允許使用Configure按鈕,,這是因為APNS不支持帶通配符的App ID。
到現(xiàn)在為止,,我們已經(jīng)生成了三個文件:
1,、Push.certSigningRequest 2、Push.p12 3,、aps_developer_identity.cer
在項目的AppDelegate中的didFinishLaunchingWithOptions方法中加入下面的代碼:
通過registerForRemoteNotificationTypes方法,,告訴應(yīng)用程序,能接受push來的通知,。
在項目的AppDelegate中添加下面的方法來獲取deviceToken:
獲取到的deviceToken,,我們可以提交給后臺應(yīng)用程序,發(fā)送通知的后臺應(yīng)用程序除了需要知道deviceToken之外,,還需要一個與APNS連接的證書,。
這個證書可以通過我們前面生成的兩個文件中得到。
1,、將aps_developer_identity.cer轉(zhuǎn)換成aps_developer_identity.pem格式
2,、將p12格式的私鑰轉(zhuǎn)換成pem
3、創(chuàng)建p12文件
這樣我們就得到了在.net或java等后臺應(yīng)用程序中使用的證書文件:aps_developer_identity.p12
如果后臺應(yīng)用是php的話,,那么可以按照 iOS消息推送機制中pem文件的生成這篇文章中的方法來生成php后臺應(yīng)用程序中使用的證書文件:ck.pem |
|
來自: 求知665 > 《ios有用網(wǎng)頁》