在手機已成為生活必不可分的一部分,push服務伴隨而來。ios的apns,android隨着谷歌退出中國市場,各家在android的推送不斷展開。有廠商的推送,如小米、華為、魅族、oppo等,還有中間商的服務,如極光、友盟等。
蘋果推送的apns,還是廠商的推送,都是走的代理,發給代理后即可。而自研的安卓推送,則是要自我維護,更好的保護好長連接,精准化推送人群,以及軟實時等方面去設計和考慮。
這里只談一下安卓推送。安卓推送的長連接包活關系到app是否能與服務端通信。而android系統又是個生態系統,自身機制可把內存大的、長時間運行的app等干掉。所以,app的包活至關重要。
目前,業內大概三種的包活方案:
1)app喚起聯盟,即a和b在一個聯盟中,a啟動的時候,會喚起b。
2)手機出廠root到白名單。這一點:如微信、qq等app。在git上有人做過實驗,要是刷機后,卸載重新安裝上述app,在沒有啟動app的場景下,無法收到消息。
這一點不難理解,哪家的手機也不能在出廠的時候,沒有給這些用戶量大的app放到白名單中,誰也不想買個手機是個肉雞。
3)app前端啟動,這點如:qq音樂。在手機鎖屏等時候,app是運行在前台的,而不是大多數后台運行。這里了解到,有幾個app也是這么玩的,app前台放一個很不明顯的logo,其實就是前台運行。這樣的用戶體驗其實很差。
所有,app保活就成為了至關重要的位置,目前業內常用的有tcp保持長連接和websocket的方式。至於精准化人群,可根據用戶畫像或者tag標簽分類進行篩選。軟實時包括服務的設計,網關的設計等。
現在比較火的一個場景是物聯網,是一個大方向。把它抽象下,基礎模型可以從push推送模型中抽取到。
