前言
- 鑒于現(xiàn)在運營需求的增強,消息推送在
Android 開發(fā)中應用的場景是十分常見
如電商的活動宣傳、資訊類產(chǎn)品進行新聞推送等等
- 今天,我將全面介紹
Android 中實現(xiàn)消息推送的7種主流解決方案
目錄
1. 本質(zhì)
應用App 主動向用戶推送服務器最新消息
實際上,是當服務器有新消息需推送給用戶時,先發(fā)送給應用App ,應用App 再發(fā)送給用戶
2. 作用
- 產(chǎn)品角度:功能需要,如:資訊類產(chǎn)品的新聞推送、工具類產(chǎn)品的公告推送等等
- 運營角度:活動運營需要,如:電商類產(chǎn)品的促銷活動;召回用戶 / 提高活躍度等等
作為開發(fā)者,不要有需求就接,應該多思考、多理解用戶 / 功能的使用場景,有助于我們更好地去選擇合適的開發(fā)方式
3. 原理
- 推送的原理主要是2種方式:Push 和 Pull
- 具體如下
4. 解決方案
Android 中,實現(xiàn)消息推送的主流方案有7種
- 下面,我將詳細解析每個解決方案
注:
- 每個操作系統(tǒng)有自身的消息推送功能,屬于 系統(tǒng)級別,即 任何時候都可以推送給用戶,且不會被系統(tǒng)殺死
- Android的消息推送服務稱為:C2DM(Cloudto Device Messaging),將在下面詳細描述
4.1 C2DM
Cloud to Device Messaging,云端推送,是Android系統(tǒng)級別的消息推送服務(Google出品)
- 原理
基于Push方式
- 具體描述
C2DM服務負責處理諸如消息排隊等事務,并向運行于目標設備上的應用程序分發(fā)這些消息。如下圖:
- 優(yōu)點
C2DM提供了一個簡單的、輕量級的機制,允許服務器可以通知移動應用程序直接與服務器進行通信,以便于從服務器獲取應用程序更新和用戶數(shù)據(jù)。
- 缺點
- 依賴于Google官方提供的C2DM服務器,但在國內(nèi)使用Google服務需要翻墻,成本較大;
- 需要用戶手機安裝Google服務。但由于Android機型、系統(tǒng)的碎片化 & 國內(nèi)環(huán)境,國內(nèi)的Android系統(tǒng)都自動去除Google服務,假如要使用C2DM服務,這意味著用戶還得去安裝Google服務,成本較大。
4.2 輪詢
- 原理
基于Pull方式
- 具體描述
應用程序隔固定時間主動與服務器進行連接并查詢是否有新的消息
- 優(yōu)點
實時性好
- 缺點
- 成本大,需要自己實現(xiàn)與服務器之間的通信,例如消息排隊等;
- 到達率不確定,考慮輪詢的頻率:太低可能導致消息的延遲;太高,更費客戶端的資源(CPU資源、網(wǎng)絡流量、系統(tǒng)電量)和服務器資源(網(wǎng)絡帶寬)
####4.3 SMS信令推送
- 原理
基于Push方式
- 具體描述
服務器有新消息時,發(fā)送1條類似短信的信令給客戶端,客戶端通過攔截信令,解析消息內(nèi)容 / 向服務器獲取信息
- 優(yōu)點
可實現(xiàn)完全的實時操作
- 缺點
成本高(主要是短信資費的支出)
4.4 MQTT協(xié)議
- 定義
輕量級的消息發(fā)布/訂閱協(xié)議
- 原理
基于Push方式,wmqtt.jar 是IBM提供的MQTT協(xié)議的實現(xiàn),原理如下圖:
更多關于MQTT協(xié)議:
- 項目實例源
- 一個采用PHP書寫的服務器端
- Jar包下載地址,并加入自己的Android應用程序中。
- 拓展:RSMB是從MQTT協(xié)議引申出來的另外一種解決方案:簡單的MQTT代理,詳情請點擊
4.5 XMPP協(xié)議
- 定義
Extensible Messageing and Presence Protocol,可擴展消息與存在協(xié)議,是基于可擴展標記語言(XML)的協(xié)議,是目前主流的四種IM協(xié)議之一
其他三種:
- XMPP的核心:XML流傳輸協(xié)議(在網(wǎng)絡上分片斷發(fā)送XML的流協(xié)議),也是即時通訊指令的傳遞基礎,即XMPP用TCP傳的是XML流
- 與即時通訊相關的指令,在以前要么用2進制的形式發(fā)送(比如QQ),要么用純文本指令加空格加參數(shù)加換行符的方式發(fā)送(比如MSN)。
- XMPP傳輸?shù)募磿r通訊指令的邏輯與以往相仿,只是協(xié)議的形式變成了XML格式的純文本。
服務器
- 監(jiān)聽客戶端連接,并直接與客戶端應用程序通信(客戶端信息記錄)
- 與其他 XMPP 服務器通信;
網(wǎng)關:與異構(gòu)即時通信系統(tǒng)進行通信
異構(gòu)系統(tǒng)包括SMS(短信),MSN,ICQ等
通信能夠在這三者的任意兩個之間雙向發(fā)生。
原理流程
更多關于XMPP協(xié)議更加詳細請點擊
4.6 使用第三方平臺
現(xiàn)今主流的推送平臺分為
- 手機廠商類:小米推送、華為推送。
- 第三方平臺類:友盟推送、極光推送、云巴(基于MQTT)
- BAT大廠的平臺推送:阿里云移動推送、騰訊信鴿推送、百度云推送
具體各推送平臺的優(yōu)缺點請看我寫的文章:Android推送:第三方消息推送平臺詳細解析
4.7 自己搭建
如果你的產(chǎn)品對于消息推送具備較高的功能和性能要求,同時對安全性要求非常高的話,自己搭建可能是最好的方式,但這種方式無疑成本是最高的。
至此,關于Android 推送的解決方案講解完畢。
5. Android推送 與 iOS推送的區(qū)別
6. 總結(jié)
-
經(jīng)過上面的詳細講解,相信大家現(xiàn)在對Android中消息推送的解決方案已經(jīng)非常了解,總結(jié)如下
-
解決方案沒有優(yōu)劣,要具具體使用場景而定。但一般來說,個人建議使用第三方平臺推送,成本低+抵達率高
-
關于Android消息推送的其他知識,具體請看: Android消息推送:手把手教你集成小米推送 Android推送:第三方消息推送平臺詳細解析
-
接下來,我會繼續(xù)講解Android開發(fā)中關于消息推送的其他知識,感興趣的同學可以繼續(xù)關注carson_ho的微信公眾號
請幫頂 / 評論點贊!因為你的鼓勵是我寫作的最大動力!
|