APNs原理及環(huán)境搭建

APNs

推送在我們的生活中無處不在,下面就已開發(fā)者的角度來為你介紹其工作原理及如何搭建push server環(huán)境。
一款A(yù)PP要想收到消息推送,有一個必要前提——配置推送證書。這里不在介紹如何配置推送證書。

原理

server下發(fā)消息給APP

Provider將消息推送給APNs,APNs將消息推送給Device,Device再將消息通知給APP。

remote_notif_simple_2x.png

推送原理

推送的前提是Device需向APNs發(fā)起注冊注冊,注冊成功后APNs下發(fā)一個deviceToken給APP,APP再將其發(fā)送給Provider,當(dāng)有要被推送的消息時,Provider會將消息結(jié)合deviceToken按指定的消息格式打包發(fā)送給APNs,然后由APNs推送給Device。

deviceToken生成

token_generation_2x.png
  1. Device向APNs注冊遠(yuǎn)程推送服務(wù)
  2. APNs經(jīng)過內(nèi)部流程處理生成一個deviceToken,下發(fā)給Device
  3. Device將獲取到的deviceToken發(fā)送給Provider

推送過程

token_trust_2x.png
  1. APP鏈接APNs的過程中,APNs會驗證deviceToken,鏈接成功后會維持一個TCP長連接
  2. Provider將消息結(jié)合deviceToken封包發(fā)送給APNs
  3. APNs將接收到的消息發(fā)送給deviceToken設(shè)備
  4. 設(shè)備再將收到的消息通知給APP

server搭建

合成PEM證書

命令行:

  • 生成公鑰
openssl x509 -in aps_development.cer -inform der -out PushPublicCert.pem
  • 生成私鑰
openssl pkcs12 -nocerts -out PushPrivateKey.pem -in Push.p12
  • 將剛才生成的兩個pem文件合成到一個文件中
cat PushPublicCert.pem PushPrivateKey.pem > ck.pem
  • 測試證書是否正常工作
telnet gateway.sandbox.push.apple.com 2195
  • 利用SSL證書和私鑰來設(shè)置一個安全的鏈接去鏈接蘋果服務(wù)器
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert PushPublicCert.pem -key PushPrivateKey.pem
openssl s_client -connect api.push.apple.com:443 -cert PushPublicCert.pem -key PushPrivateKey.pem

server code

舊:
開發(fā)環(huán)境:gateway.sandbox.push.apple.com:2195
發(fā)布環(huán)境:gateway.push.apple.com:2195

新:
開發(fā)環(huán)境:api.development.push.apple.com:443
發(fā)布環(huán)境:api.push.apple.com:443

Download_APNsProject

結(jié)語

以前僅知道原理,至于服務(wù)端如何與蘋果服務(wù)器通信沒有一點概念。于是利用閑暇時間翻閱資料寫了篇關(guān)于APNs如何在服務(wù)端發(fā)送。爭取不做口頭的巨人行動的矮子(初中的時候班主任就時刻告訴我們這句話,現(xiàn)在基本上拋之腦后 冷汗!冷汗?。D壳爸皇钦砹嘶赟SL協(xié)議的TCP長連接流通訊,HTTP/2后續(xù)會整理出來。

Reference

AppleDoc——APNs

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容