遠(yuǎn)程推送
遠(yuǎn)程推送服務(wù)APNs (Apple Push Notification Services)
通俗講就是從遠(yuǎn)程服務(wù)器推送消息給客戶端的通知,當(dāng)然這需要聯(lián)網(wǎng),只要你的蘋果設(shè)備聯(lián)網(wǎng)狀態(tài),你的設(shè)備就與蘋果的APNS服務(wù)器保持一個長連接狀態(tài)。友盟、極光、信鴿等遠(yuǎn)程推送都是必須通過蘋果的APNs服務(wù)器來實(shí)現(xiàn)的。推送原理看這邊 ? 通知和消息機(jī)制
部分摘抄:

推送通知的過程可以分為以下幾步:
a.應(yīng)用服務(wù)提供商從服務(wù)器端把要發(fā)送的消息和設(shè)備令牌(device token)發(fā)送給蘋果的消息推送服務(wù)器APNs。
b.APNs根據(jù)設(shè)備令牌在已注冊的設(shè)備(iPhone、iPad、iTouch、mac等)查找對應(yīng)的設(shè)備,將消息發(fā)送給相應(yīng)的設(shè)備。
c.客戶端設(shè)備接將接收到的消息傳遞給相應(yīng)的應(yīng)用程序,應(yīng)用程序根據(jù)用戶設(shè)置彈出通知消息。
以下證書制作主要步驟:
1.App ID 的創(chuàng)建
2.Certificates 的創(chuàng)建和配置
3.鑰匙串中證書導(dǎo)出.p12格式文件
App ID 的創(chuàng)建

Certificates,Identifiers&Profiles 進(jìn)入管理頁面(已有 App IDs 的找到自己的直接展開編輯,否則按步驟操作)

接著來到了這里, 這下邊連著3張圖在同個界面



Continue到這里,可以看到之前我勾選了 Push Notification,這里下邊有個小菊花警告,有警告就對了,繼續(xù)往下

一波點(diǎn)擊后跳轉(zhuǎn)到了這里,在這里我們 App ?IDS中找我們先前創(chuàng)建的 App ID(HeyGirl),點(diǎn)擊展開

來到這個頁面,現(xiàn)在有兩盞菊花燈,Edit 進(jìn)去

往下拖可以看到,這里講一下什么是開發(fā)環(huán)境和生產(chǎn)環(huán)境:
你用Xcode編譯安裝的就是開發(fā)環(huán)境,用二維碼或者App Store下載的就是生產(chǎn)環(huán)境.

點(diǎn)擊第一個 Create Certificate 后來到這里,它提示我們要上傳東西

Certificates 的創(chuàng)建和配置
來到鑰匙串->鑰匙串訪問->


到這里,點(diǎn)繼續(xù)就可以創(chuàng)建和配置好Certificates了,選個路徑放好,我隨便丟在了桌面

還記得晾著的頁面嗎?回到Apple Member Center,點(diǎn) Choose File,把剛才從鑰匙中生成存在本地的CertificateSigningRequest文件上傳上去(文件就長上邊那個樣),然后 Download 下來.

然后咱們還是回到App IDs 這里再找到我的 HeyGirl點(diǎn)進(jìn)來你會發(fā)現(xiàn),剛剛的兩朵小菊花一朵變綠了,就是說咱還有一個生產(chǎn)環(huán)境的沒配置完, Edit重復(fù)上述步驟:選取文件, Download.


不出意外你會在下載的文件夾發(fā)現(xiàn)多了這兩個文件:aps_development.cer和aps.cer,這兩個就是下載創(chuàng)建好的Production SSL Certificate,Development SSL Certificate證書,把它們雙擊添加到鑰匙串.
鑰匙串中證書導(dǎo)出為P12文件


大功告成,接著用哪個第三方推送服務(wù)平臺就把.p12往哪搬。
---------我是分割線------------
拓展:以下針對. p12類型轉(zhuǎn). pem 的操作
導(dǎo)出開發(fā)證書為例



我們需要通過終端命令將這些文件轉(zhuǎn)換為. pem 類型.
因?yàn)槲野褍蓚€文件都放在桌面
1、$ cd desktop? 回車(坑點(diǎn):不寫轉(zhuǎn)換后在桌面找不到多出來的 cer.pem 和 key.pem 文件)?
2、使用openssl 將cer.p12及key.p12轉(zhuǎn)成cer.pem和key.pem
命令如下:
$ openssl pkcs12 -clcerts -nokeys -out cer.pem -in cer.p12
$ openssl pkcs12 -nocerts -out key.pem -in key.p12
注:如果最終的pem在服務(wù)端系統(tǒng)使用時不需要密碼,則可以執(zhí)行命令擦除密碼:
$ openssl rsa -in key.pem -out key_nopwd.pem
最后會在桌面生成兩個pem文件,如:“cer.pem”、“key.pem或者key_nopwd.pem(執(zhí)行擦除密碼命令生成后者)”,那么在3、4步驟也要注意統(tǒng)一為 key_nopwd.pem 執(zhí)行操作
3、測試生成的cer.pem及key.pem是否可用
$ openssl s_client -connect gateway.push.apple.com:2195? -cert cer.pem -key key.pem
注:gateway.push.apple.com:2195用于appStore app;
gateway.sandbox.push.apple.com:2195用于沙盒app;
以上命令執(zhí)行后會打印一大羅信息,最后處于可輸入狀態(tài),打幾個字符回車后自動斷開連接即為正常。
4、我們需要將鍵和許可文件合成一個.pem文件,如 ck.pem,此文件在連接到APNS時需要使用,執(zhí)行命令
$ cat cer.pem key.pem > ck.pem
