新的APNs協(xié)議基于HTTP/2赎瑰,一種是使用Universal Push Notification Client SSL 證書铣减,一種是使用Token庇忌。
基于HTTP/2與Token的 APNs 協(xié)議
APNs Provider(即睛挚,APP的后臺) API 允許您向您的 iOS,macOS 設(shè)備上的應(yīng)用程序和 Apple Watch 發(fā)送遠(yuǎn)程通知溃蔫。API 基于 HTTP/2 網(wǎng)絡(luò)協(xié)議。每個交互通過一個 POST 請求琳猫,包含 JSON 的有效Payload負(fù)載伟叛,通過服務(wù)器使用Auth Key生成服務(wù)端token連接APNs服務(wù)器,并且通過設(shè)備token發(fā)送負(fù)載脐嫂。APNs然后轉(zhuǎn)發(fā)給特定設(shè)備的指定應(yīng)用程序统刮。
Request 和 Response 使用JSON通信APNs支持狀態(tài)碼和返回 error 信息APNs推送成功時 Response 將返回狀態(tài)碼200APNs推送失敗時,Response 將返回 JSON 格式的 Error 信息账千。最大推送長度提升到4096字節(jié)(4Kb)可以通過 “HTTP/2 PING ” 心跳包功能檢測當(dāng)前 APNs 連接是否可用侥蒙,并能維持當(dāng)前長連接。支持為不同的APP定義 “topic”(其實(shí)就是App Bundle ID)多個推送App匀奏,只需要一個Apple Push APNs Auth Key
Apple Push Notification Authentication Key
2016年9月鞭衩,蘋果悄悄上線了token驗(yàn)證的推送方式,通過獲得一個認(rèn)證密鑰(APNs Auth Key)去生成服務(wù)器端token,并且token非常容易生成论衍,可以使用這些token令牌代替推送證書。一個認(rèn)證密鑰可用于多個應(yīng)用程序并且永遠(yuǎn)不過期。每一個需要推送的App都需要配置推送證書的時代過去了冠场。but秆麸,大部分第三方推送服務(wù)商,目前都沒有升級到APNs Auth Key Token模式蜒蕾。- 通過 APNs Auth Key 鑒權(quán)
開發(fā)者網(wǎng)站證書頁面:開發(fā)者網(wǎng)站
1.點(diǎn)擊左側(cè)列表 “Keys” 中的 “All”稠炬,看賬戶中是否已有 auth key,沒有則點(diǎn)擊 “+” 新建咪啡。
2.填寫該 key 的描述并選擇服務(wù)首启,如下圖。 (注:在開發(fā)和生產(chǎn)環(huán)境均可使用瑟匆,且不會過期闽坡。)
3.點(diǎn)擊 “Continue” 讓你確認(rèn)信息,再點(diǎn)擊 “confirm”愁溜,就可以下載該 key了疾嗅。(.p8 密鑰文件)
(注意:記下 key id(.p8 密鑰文件),而且只可以下載一次冕象,請妥善保存代承。)
4.獲取你之前創(chuàng)建過的應(yīng)用的 Bundle ID
5.在開發(fā)者賬戶的 “Membership” 頁面獲取 Team ID
6.在推送平臺控制臺上,進(jìn)入你應(yīng)用的應(yīng)用設(shè)置中 iOS 的鑒權(quán)方式選擇 “Token Authentication”渐扮,上傳 auth key 文件论悴,并填寫你的 KEY ID,TeamID墓律,和指定應(yīng)用的 BundleID膀估。推送平臺會在后臺為你的應(yīng)用進(jìn)行鑒權(quán)。
權(quán)限和使用期限
新的token驗(yàn)證推送耻讽,一個認(rèn)證密鑰可用于多個App服務(wù)察纯,沒有時效性。不用為每個App需要單獨(dú)配置兩個(開發(fā)環(huán)境和生產(chǎn)環(huán)境)證書针肥,還要注意過沒過期饼记。