關於ios和Android後臺推送工作原理的小總結

 
    如今的推送功能,在很多APP上得以應用,國內很多出名成熟的推送例如百度推送、極光推送、友盟推送等第三方推送服務提供集成到自己的APP中;可我看了很多網絡文章,這個推送的“原理”很多文章都描述的模棱兩可,大多文章都介紹了推送的底層所使用XMPP(可擴展消息處理現場協議)、MQTT(IBM系列的,消息隊列遙測傳輸,sohu早期客戶端的方式),可最終說了一大堆我依舊矇頭轉向,請原理我這個一般程序員的愚笨吧;


    1、要獲取服務器上不定時更新的信息,一般來說有兩種方法:第一種是客戶端使用 拉去 的方式,就是隔一段時間就去服務器上獲取一下信息,看是否有更新的信息出現(弊端很多,例如耗電、費流量、信息不及時)。第二種就是 服務器使用Push(推送)的方式,當服務器端有新信息了,則把最新的信息Push到客戶端上。這樣,客戶端就能自動的接收到消息。


    2、幾種常見的解決方案實現原理,無非就是輪詢、SMS攔截短信、還有就是持久鏈接,關於這三張方式,很多平臺都詳細的講過了,在此基礎上,蘋果的APNS、Google的GCM成爲推送服務端的兩大陣營;說到這裏,就有必要探討一下兩則的區別了,ios採用的是系統常駐進程,和唯一的apns服務器連接,管理着全局的推送信息進來,然後APP再根據tag判斷獲取自己的推送信息;Android的GCM在國內沒法使用,從而催生了很多第三方推送平臺,Android APP的每個推送都是開啓獨立的後臺進程和服務端通信,有若干個APP的推送,就有對應的若干個進程在運行;ios和Android各有優劣,ios的推送服務是系統級別的唯一的,客戶端所有的推送信息都來源於這唯一的入口,因而在耗電、內存開銷都小,但是由於apns是蘋果公司獨立運營,這也帶來很多的運營風險,它一旦癱瘓所有的iPhone都將收不到推送信息;再說一下Android,ios的優點就對應的Android的缺點,所以在耗電、內存都會開銷大,但也因爲他是獨立的,所以不受生產商約束,推送可以自由化根據自己需求定製開發,可也有一個大弊端,由於各個app的推送服務都是跟隨獨立的,在內存不足或者APP被徹底關閉後,推送服務也會一同over,也就是說推送會跟着APP結束而結束,結束後將接不到推送;


   3、以上做了點對大神闡述推送後的一點自己的片面理解,那麼值得說一下APNS和GCM原理了,它到底是如何推送到咱們手機上的呢,其中Android的就是Google的XMPP和IBM的MQTT協議了,XMPP用於即時通信和在線探測,而MQTT是工作在低帶寬、不可靠的網絡的遠程傳感器和控制設備通訊而設計的協議(個人認爲它更適合物聯網,傳感設備領域的,百度百科中說他的理論是輪詢),差異就在於此,也不知道現在是否在APP中使用,但是倆着的共同的鏈接方式都是tcp/ip鏈接,也就是咱們說的長連接,tcp/ip保證了我們在傳輸中數據的完整性

一時興起寫的,肯定多有錯誤,別吝嗇多指導噢
 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章