標籤:ios apns 推送 php
1.前言
iOS採用APNS做推送,流程附一張圖吧,不多說
2.正題
這兩天重新搞了幾天的推送,有些坑想給大家指出來,少走彎路。
那我想要說的是流程中需要用的各種檔案,為諸位做一個梳理,理解不到之處,敬請批評指正!
註:以Development為例,Distribution照搬即可。同樣我們實現的網上常見的用php實現的推送伺服器。
2.1 所需檔案
首先是我們最終需要產生如所示的檔案夾中的檔案:
其中各個檔案的關係:
2.2 產生各個檔案時中的彎彎
1、產生Certificate Signing Request (CSR):
正常情況下,產生CSR檔案如所示:
而正確產生CSR之後,會在密鑰一項出現對應的密鑰,
注意:下面這種情況會導致認證有問題!
2、產生PushZYQ.mobileprovision檔案
產生PushZYQ.mobileprovision需要選擇對應的認證,注意此處需要選擇的認證是ios_development.cer對應的認證而不是SSL認證
3、產生PushZYQ.p12檔案
4、各種命令
三步產生ck.pem檔案
4.1、
openssl x509 -in aps_development.cer -inform der -out PushZYQCert.pem
4.2、
openssl pkcs12 -nocerts -out PushZYQKey.pem -in PushZYQ.p12
4.3、
cat PushZYQCert.pem PushZYQKey.pem > ck.pem
5、關於接收推送
預設推送提示是在程式退出後才會出現的,所以如果當前程式正在運行,只能通過回調方法來判斷,如果你想聯調的話。
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{ // 處理推送訊息 NSLog(@"userinfo:%@",userInfo); NSLog(@"收到推送訊息:%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]);}
3.所需檔案
3.1、PHP實現的服務端,由於不能插入超連結,所以大家可輸入圖中URL
3.2、簡易Demo
這個Demo中沒有圖示,大家可以通過控制台來查看,適配iOS8.0+。
4.正常情況下
關於蘋果APNS推送機制中各組建檔案(CSR、認證、Provisioning檔案)的關係的梳理,以及各種坑