Android推送研究概述

手機推送原理:主要爲Pull和Push方式,Pull主要爲輪詢,由手機發起請求耗電耗流量。Push則由SMS和持久連接,而SMS需要向移動運營商付費,成本太高。

手機聯網原理:運營商分配給手機的實際上是運營商的內網IP,需要通過NAT(NetworkAddress Translation)進行IP地址轉換。如果一個鏈路有一段時間沒有通信時運營商就會刪除網關NAT映射表中其對應表。(故而長連接心跳是必須的)

iOS現狀:有簡單有效的方案APNs,由蘋果提供統一服務器維護。

Android現狀:Google提供C2DM(GCM),但是中國國內google服務不穩定,只能自己解決。(使用Timer(耗電)或AlarmManager(RTC即RealTime Clock))

近幾年現狀:出現了很多第三方推送如信鴿推送(不能滿足高到達率)、極光推送(沉澱較深,沒有偷偷加入權限,後臺比較古老,支持兄弟應用互相拉起)、小米推送(基於MIUI系統)、友盟推送(引入其他第三方庫,app共享推送)、個推(收費)、阿里推送(強行植入one sdk並且有收費趨勢)、百度雲推送、雲巴等。

手機廠商爲了控制後臺服務,延長手機待機時間,持續地推出各種限制手段。比如之前的心跳對齊,也就是不允許 App 任意使用 RTC 後臺喚醒手機。還有更嚴厲的手段,就是定時清理所有後臺服務,並且不允許服務通過監聽廣播自動拉起。(第三方推送已死,根基被動搖)

華爲、小米有提供官方的推送,OPPO、VIVO、金立則沒有。

一種方案:集成多個第三方推送,根據機型來註冊不同的推送服務,後端不控制推送的平臺。

幾個問題:1、android端app的保活問題;2、兼容iOS;3、一臺服務器維護長連接的量級;4、消息的平均長度和限制。5、消息的及時性與時延;6、v消息用戶都用什麼手機?用vivo的話,vivo自己沒有推送服務很難搞……

四大主流IM協議:XMPP(最爲靈活),IMPP、PRIM、SIP(SIMPLE)。

那麼現在主要使用的協議還是XMPP和MQTT兩種,對應的官方網站爲:https://xmpp.org/http://mqtt.org/,上面有一些推薦的客戶端以及服務器的開源項目,有興趣的都可以去嘗試一下。

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