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