ios推送通知
iOS上簡單推送通知(Push Notification)的實現(xiàn)
? ? 根據(jù)這篇很好的教程(http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12),結(jié)合自己的實踐,寫下一點筆記,僅供參考:)
? ? 由于篇幅較長,我列出簡單的目錄,如下
1) 理解Apple推送通知的機制
2) 創(chuàng)建App ID
3) 創(chuàng)建CSR文件
4) 創(chuàng)建Provisioning Profile文件
5) Xcode工程中取得Device Token
6) 創(chuàng)建.pem文件
7) 編寫PHP服務(wù)器代碼,發(fā)送通知
1、理解Apple推送通知的機制
從上面的流程圖中,可以看到一個能接收推送通知的App,需要3個東西:
- ?App ID(唯一標(biāo)識一個App程序)
- ?Provisioning Profile(App程序的發(fā)布需要它,所以推送通知只能在真機上測試)
- ?Device Token(設(shè)備標(biāo)識,這個是推送通知功能中特有的)
而能推送通知的服務(wù)器端則要2個東西:
- SSL Certificate
- ?Private Key
(由于我對信息加密不清楚,所以這里不解釋)
值得注意的是APNS(ApplePush Notification Service) Server,完成發(fā)送Device Token和通知內(nèi)容的功能,而且這2個動作都是被動的,即第一個動作是由App發(fā)起的,第二個則是推送通知的服務(wù)器發(fā)起的。
對我而言,理解就這么多了。下面我按照參考文章進(jìn)行實驗。
?
2、創(chuàng)建App ID
點擊“New App ID”按鈕后,如下
Description的內(nèi)容可以任意,Bundle Identifier (App ID Suffix)必須和創(chuàng)建App工程時的Bundle Identifier,如下
點擊“Submit”后,點擊左側(cè)導(dǎo)航中的“App IDs”,找到剛才新創(chuàng)建的App ID,如下
點擊“Configure”后,如下
勾選“Enable for Apple Push Notification service”,然后點擊紅色的“Configure”按鈕,這里暫時只針對Development取得證書。彈出一個對話框,如下
點擊“Continue”后,要我們上傳一個CSR文件,如下
下面使用鑰匙串訪問(KeychainAccess)應(yīng)用程序創(chuàng)建上面需要的CSR文件(.certSigningRequest文件)
?
3、創(chuàng)建CSR文件
Keychain Access位于/Applications/Utilities目錄中,打開它如下
然后彈出窗口如下。
UserEmail Address隨意寫就可以,Common Name也是一樣,注意勾選“Save to disks”,然后點擊“Continue”。很快就生成好了所需文件,去找到它。
回到下面的網(wǎng)頁中,上傳剛才用KeychainAccess產(chǎn)生的HelloRemoteNotification.certSigningRequest文件。
很快需要的證書就OK了,如下
點擊“Continue”,然后點擊“Done”。
發(fā)現(xiàn)上面的Status是Enabled,而且多了“Download”按鈕,點擊它,下載了一個名為“aps_development.cer”的文件。雙擊打開它,
找到上圖中“Keys”欄中名為“HelloRemoteNotification”的private key(注意是private key,而不是public key),右擊它,選擇“Export “HelloRemoteNotification”…”,這樣會導(dǎo)出一個.p12文件(需要輸入密碼),如下(目前共有3個文件)
下面開始用剛才產(chǎn)生的.p12文件,創(chuàng)建Profile provision文件
?
4、創(chuàng)建ProvisioningProfile文件
在上圖中,點擊“New Profile”按鈕后,如下
填寫“Profile Name”;勾選“Certificate”;“App ID”選擇正確的、之前我們創(chuàng)建的ID,即PushNotification;最后關(guān)聯(lián)需要測試真機設(shè)備。點擊“Submit”,如下
可以看到多了一個Provisioning Profile文件,點擊“Download”按鈕下載它,這時我們一共產(chǎn)生4個文件,如下
雙擊“PushNotification.mobileprovision”文件,或把它拖入到Xcode中。
在Xcode中,找到Code Signing項,如上圖,將Debug一項配置成剛才拖入Provisioning Profile對應(yīng)的iPhone Developer。
?
5、Xcode工程中取得Device Token
在application:didFinishLaunchingWithOptions:方法里,注冊使用遠(yuǎn)程通知。
添加2個方法,application: didRegisterForRemoteNotificationsWithDeviceToken:和application:didFailToRegisterForRemoteNotificationsWithError:,用于取得Device Token和打印錯誤。運行我們建的HelloRemoteNotification工程,如果以上步驟都正確,應(yīng)該打印出Device Token,如下
也可能出錯如下
?
6、創(chuàng)建.pem文件
- ?將已有的.cer文件轉(zhuǎn)成.pem文件
- 將已有的.p12文件轉(zhuǎn)成.pem文件(需要輸入密碼)
- 最后將上面2個.pem文件合并成1個.pem文件(需要輸入新密碼)
aps_development.cer->HelloRemoteNotification.pem(下面改名為HelloRemoteNotificationCert.pem)
HelloRemoteNotification.p12-> HelloRemoteNotificationKey.pem
HelloRemoteNotification.pem +HelloRemoteNotificationKey.pem合并成ck2.pem
?
7、編寫PHP服務(wù)器代碼,發(fā)送通知
[php]?view plaincopy[php]?view plaincopy
運行上面的php腳本,如下
可以看到iPad上面收到的推送通知,如下,表示實踐成功!
?
參考資料:
1、http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12
總結(jié)
- 上一篇: IOS Push 证书的重新生成
- 下一篇: xcode的bundle identif