Android App訊息推送 實現原理

2021-08-19 23:18:56 字數 2285 閱讀 4881

1.訊息推送的實質

2. 作用

產品角度:功能需要,如:資訊類產品的新聞推送、工具類產品的公告推送等等

運營角度:活動運營需要,如:電商類產品的**活動;召回使用者 / 提高活躍度等等

作為開發者,不要有需求就接,應該多思考、多理解使用者 / 功能的使用場景,有助於我們更好地去選擇合適的開發方式

3.原理

4.7 種主流的訊息推送方式

1.c2dm

cloud to device messaging,雲端推送,是android系統級別的訊息推送服務(google出品)

c2dm服務負責處理諸如訊息排隊等事務,並向執行於目標裝置上的應用程式分發這些訊息。

優點c2dm提供了乙個簡單的、輕量級的機制,允許伺服器可以通知移動應用程式直接與伺服器進行通訊,以便於從伺服器獲取應用程式更新和使用者資料。

缺點依賴於google官方提供的c2dm伺服器,但在國內使用google服務需要翻牆,成本較大;

需要使用者手機安裝google服務。但由於android機型、系統的碎片化 & 國內環境,國內的android系統都自動去除google服務,假如要使用c2dm服務,這意味著使用者還得去安裝google服務,成本較大。

2.輪詢

基於pull方式,應用程式隔固定時間主動與伺服器進行連線並查詢是否有新的訊息

優點實時性好

缺點成本大,需要自己實現與伺服器之間的通訊,例如訊息排隊等;

到達率不確定,考慮輪詢的頻率:太低可能導致訊息的延遲;太高,更費客戶端的資源(cpu資源、網路流量、系統電量)和伺服器資源(網路頻寬)

4.3 sms信令推送

基於push方式,伺服器有新訊息時,傳送1條類似簡訊的信令給客戶端,客戶端通過攔截信令,解析訊息內容 / 向伺服器獲取資訊

優點 可實現完全的實時操作

缺點 成本高(主要是簡訊資費的支出)

4.4 mqtt協議

輕量級的訊息發布/訂閱協議,基於push方式,wmqtt.jar 是ibm提供的mqtt協議的實現,原理如下圖:

4 .5 xmpp協議

定義extensible messageing and presence protocol,可擴充套件訊息與存在協議,是基於可擴充套件標記語言(xml)的協議,是目前主流的四種im協議之一

其他三種:

即時資訊和空間協議(impp)

空間和即時資訊協議(prim)

即時通訊和空間平衡擴充的程序開始協議sip(******)

原理: xmpp中定義了三個角色,分別是客戶端、伺服器和閘道器

客戶端通過 tcp/ip與xmpp 伺服器連線,然後在之上傳輸與即時通訊相關的指令(xml);

解析組織好的 xml 資訊包;

理解訊息資料型別。

與即時通訊相關的指令,在以前要麼用2進製的形式傳送(比如qq),要麼用純文字指令加空格加引數加換行符的方式傳送(比如msn)。

xmpp傳輸的即時通訊指令的邏輯與以往相仿,只是協議的形式變成了xml格式的純文字。

伺服器監聽客戶端連線,並直接與客戶端應用程式通訊(客戶端資訊記錄)

與其他 xmpp 伺服器通訊;

閘道器:與異構即時通訊系統進行通訊

異構系統包括sms(簡訊),msn,icq等

通訊能夠在這三者的任意兩個之間雙向發生。

原理流程

原理流程

優點開源:可通過修改其源**來適應我們的應用程式。

可拓展性強:繼承了在xml環境中靈活的發展性,可進一步對協議進行擴充套件,實現更為完善的功能。

gtalk、qq、im等都用這個協議

缺點如果將訊息從伺服器上推送出去,則不管訊息是否成功到達客戶端手機上。

IOS訊息推送。

本來ios開發工程師說要使用個推,但是我們是做金融的,可能需要給使用者推送訂單狀態等等。這樣的話用起來就會很不方便,於是在網上找了找資料自己動手寫了乙個。就是簡易基礎的,希望大家看了能夠有用。需要引入幾個jar包 import com.notnoop.apns.apns import com.not...

APNS推送訊息

解釋 2.當蘋果apns推送服收到來自你應用的註冊訊息就會返回一串device token給你 很重要 3.將應用收到的device token傳給你本地的push伺服器 4.當你需要為應用推送訊息的時候,你本地的推送伺服器會將訊息,以及device token打包傳送到蘋果的apns服 5.apn...

swoole訊息推送

socket.php 注釋的部分是學習的筆記 建立websocket伺服器物件,監聽0.0.0.0 9502埠 ws new swoole websocket server 0.0.0.0 9501 監聽websocket連線開啟事件 客戶端想伺服器傳送資訊是呼叫函式 ws websocket 伺服...