HTTP/2 協(xié)議用于 iOS 推送提醒服務(wù) (APNS)
蘋果最近更新了他們的推送提醒服務(wù)協(xié)議,APNS。這個新版本的協(xié)議基于HTTP/2和JSON,相比于舊的二進(jìn)制協(xié)議,新的協(xié)議有了巨大改進(jìn)。
新的APNS協(xié)議基于HTTP/2:
新的特性和功能:
基于JSON的請求和響應(yīng)
對于每個通知,如果成功響應(yīng),將會返回200標(biāo)識 - 不用再去猜測通知是否被接收到
響應(yīng)錯誤將會以JSON字符的形式返回
消息的長度從2048個字節(jié)增加到4096個字節(jié)
連接狀態(tài)可以通過HTTP/2的ping框架來進(jìn)行檢查
支持主題
通用的推送證書 - 開發(fā)和生產(chǎn)使用同一個證書即可
舊的APNS二進(jìn)制協(xié)議
舊的二進(jìn)制APNS協(xié)議有點奇特,一般來說,推送分發(fā)的服務(wù)器要打開一個同APNS網(wǎng)關(guān)服務(wù)器的socket連接,并保持這個連接。在舊的協(xié)議下,如果服務(wù)器響應(yīng)成功的話,你將不會收到任何回應(yīng),但是如果服務(wù)器響應(yīng)失?。ɡ?,使用了一個非法的Push token),服務(wù)器將返回了一個錯誤編碼,并關(guān)閉這個socket。最重要的是,你必須重新發(fā)送使用這個無效token以后發(fā)送的所有通知。因此,你可能一直不能確定你的推送是否成功的被服務(wù)器接收。許多系統(tǒng)使用這個漏洞,故意發(fā)送一個錯誤的token,這些黑客行為將導(dǎo)致系統(tǒng)性能低下。蘋果有一個名為"feedback"的服務(wù),我們可以定時調(diào)用這個服務(wù)來獲取invalid tokens的列表。這個服務(wù)你只要調(diào)用一次就可以獲得所有的invalid tokens 列表。所以,如果一個應(yīng)用有許多推送通知提供商,他們將會爭奪資源去輪詢查找invalid tokens列表。invalidtoken越多,你系統(tǒng)性能將越低,所以APNS只要一發(fā)生錯誤就關(guān)閉這個連接。
不過仍然還有一些限制。獲取TLS證書比較復(fù)雜,而且存儲-轉(zhuǎn)發(fā)能力弱爆了,APNS在設(shè)備下線的時候只保留一個通知,并且設(shè)備上線之后也不會向服務(wù)器上傳信息,Google Cloud Messaging就有所有這些特性。
考慮到GCM現(xiàn)在也支持iOS設(shè)備了,那么APNS和GCM現(xiàn)在形成了競爭關(guān)系。讓我共同期待APNS在2016年的新功能吧。
相關(guān)文章
iOS正確監(jiān)聽手機(jī)靜音鍵和側(cè)邊音量鍵的方法示例
這篇文章主要給大家介紹了關(guān)于iOS正確監(jiān)聽手機(jī)側(cè)邊音量鍵的相關(guān)資料,并且給大家分享了ios監(jiān)聽靜音鍵的示例代碼,文中介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-11-11iOS 16 CocoaAsyncSocket 崩潰修復(fù)詳解
這篇文章主要為大家介紹了iOS 16 CocoaAsyncSocket 崩潰修復(fù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01iOS指紋驗證TouchID應(yīng)用學(xué)習(xí)教程
這篇文章主要為大家詳細(xì)iOS指紋驗證TouchID應(yīng)用學(xué)習(xí)教程的第一篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01ios的手勢操作之UIGestureRecognizer淺析(推薦)
本篇文章主要介紹了ios的手勢操作之UIGestureRecognizer淺析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。2016-12-12IOS微信端confirm以及alert去掉網(wǎng)址的實例代碼
下面小編就為大家分享一篇IOS微信端confirm以及alert去掉網(wǎng)址的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01