APNS即Apple Push Notification Service,中文翻譯為蘋果推送通知服務。特點是穩定、方便,不足是沒有送達結果的統計,所以衍生了針對此服務的第三方推送。比如極光推送、leancloud等,很大程度上減少了服務端的開發量。本文主要介紹APNS的開發調試及部署上線的流程。客戶端準備工作如下:
創建Certificates
進入蘋果開發者中心,打開App IDs,找到Xcode工程對應的Bundle ID,即可看到Push Notifications選項開發與生產配置分別為Configurable,點擊Edit,進入下一步Create Certificate,如下圖所示。
生成Cer文件的過程中需要本地生成一個.certSigningRequest文件上傳
如何生成 Certificate Signing Request
打開mac系統中的Keychain,在證書助理中選擇從證書頒發機構請求證書,填寫郵箱保存本地即可。如下圖:
生成CSR文件后上傳,即可生成Developerment版的cer證書,下載證書到本地,雙擊安裝到鑰匙串中,然后打開鑰匙串找到剛在安裝的cer證書,點擊導出,選擇個人信息交換(.p12)格式。
完成上述操作后,打開終端,進入p12文件所在文件夾,執行以下命令,生成服務端push所用的pem證書就可以了。
openssl pkcs12 -in XXX.p12 -out XXX.pem -nodes
查看證書有效期:
openssl x509 -in xxx.pem -noout -dates
返回結果:
notBefore=Nov 6 07:55:33 2015 GMT
notAfter=Nov 5 07:55:33 2016 GMT
連接APNS測試證書是否合法:
// Development 環境
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert xxx.pem -key xxx.pem
// Distribution 環境
openssl s_client -connect gateway.push.apple.com:2195 -cert xxx.pem -key xxx.pem
合法返回結果:
Protocol : TLSv1
Cipher : AES256-SHA
Session-ID:
Session-ID-ctx:
Master-Key: 30AF233C50CBEB51B7358BA47E6B4D556CC962BC288F6D51E68300D86400F927925077B5B90C4938B189146E0A4897B2
Key-Arg : None
Start Time: 1446972326
Timeout : 300 (sec)
Verify return code: 0 (ok)
如何測試
Developer環境下的測試推薦一個mac上的app,Cocoa-APNS-Test,部署簡單方便。Production環境下的測試則需要Adhoc證書的支持了,具體操作請參考這里。