android推送的原理
❶ Android 個推推送 通知欄是什麼原理
推送通知欄系統的要素主要分為個推SDK、個推伺服器、第三方伺服器、四個方面。
個推SDK:通過JAR的形式集成在第三方的客戶端,通過並傳遞第三方平台的數據給客戶端。
個推伺服器:通常分為兩側,一側負責個推SDK的連接和維護工作,另外的一側主要是將第三方平台數據對接發送到個推SDK。
第三方伺服器:是主要數據的推送,對接個推伺服器的數據發起,傳送給客戶端。
第三方客戶端:個推SDK客戶端的第三方集成。
個推推送作用:以提升移動互聯網的用戶體驗為主要目標,提供的永遠在線免費推送服務,增加用戶黏性。
❷ Android消息推送原理
產品的角度:功能需要,比如說資訊類產品的新聞推送、工具類產品的公告推送等等
運營的角度:活動運營需要,比如說電商類產品的促銷活動;召回用戶 / 提高活躍度等等
作為開發者,不要有需求就接,應該多思考、多理解用戶 / 功能的使用場景,有助於我們更好地去選擇合適的開發方式
系統級別:任何時候都可以推送給用戶,且不會被系統殺死
Android的消息推送服務稱為:C2DM(Cloudto Device Messaging)
消息推送的本質是:App將伺服器更新的信息推送給用戶,即App獲取伺服器信息,再推送給用戶
App從伺服器獲取最新消息的基本方式(原理)有3種:Push、Pull 和 SMS
經總結,Android中實現消息推送的有7種主流解決方案,接下來將一一介紹。
4.1 C2DM
定義:Cloud to Device Messaging,雲端推送
Android系統級別的消息推送服務-Google出品
原理:基於Push方式,C2DM服務負責處理諸如消息排隊等事務,並向運行於目標設備上的應用程序分發這些消息。如下圖:
定義:輕量級的消息發布/訂閱協議
原理:基於Push方式,wmqtt.jar 是IBM提供的MQTT協議的實現,原理如下圖:
其他三種:
客戶端
通信能夠在這三者的任意兩個之間雙向發生。
原理流程
現今主流的推送平台分為
手機廠商類:小米推送、華為推送。
第三方平台類:友盟推送、極光推送、雲巴(基於MQTT)
BAT大廠的平台推送:阿里雲移動推送、騰訊信鴿推送、網路雲推送
❸ iOS 和 Android 的後台推送原理各是什麼有什麼區別
iOS 系統的推送(APNS,即 Apple Push Notification Service)依託一個或幾個系統常駐進程運作,是全局的(接管所有應用的消息推送),所以可看作是獨立於應用之外,而且是設備和蘋果伺服器之間的通訊,而非應用的提供商伺服器所以, iOS 的推送,可以不嚴謹的理解為:蘋果伺服器朝手機後台掛的一個 IM 服務程序發送的消息。
然後,系統根據該 IM 消息識別告訴哪個 App 具體發生了什麼事。
然後,系統分別通知這些 App
而 Android每個需要後台推送的應用有各自的單獨後台進程,才能和各自的伺服器通訊,交換數據。
其實 Android 也有類似 APNS 的 GCM(Google Cloud Message)的服務,如果一個應用的推送採用這種模式的話,就和iOS推送一個樣了。
GCM相關的程序應該是集成在所謂的Gapps中,但國內的 Android 手機上 GCM 處於基本不可用的狀態,而且Android 因為後台可以長駐,所以,App們各顯神通。
聊天類應用的話,大多數直接借用 XMPP 規范里的一些成果。少量如微信有IM底子的,自己開發協議。這些在實現原理上與 APNs / GCM 沒有本質的區別,但有一定的技術門檻。
而大多數普遍應用,要使用推送的話,則使用輪詢的方式簡單實現,就是定時去伺服器上查詢數據,也叫Polling,還有一種手機跟伺服器之間維護一個 TCP 長連接,當伺服器有數據時,實時推送到客戶端,也就是我們說的 Push。
輪詢的方式不論怎麼優化都比較費電費流量,長連接的方式在網路不穩定的情況下,Socket比較容易斷開推送數據失敗,
安卓推送可以考慮使用第三方推送工具,比如極光推送
❹ Android&iOS推送
1.推送的由來:
推送興起於Email,用於提醒用戶郵件的更新. 後續由於移動互聯網的迅速發展,推送被廣泛應用.
2.推送的原理:
推送的本質原理是客戶端與伺服器之間的長連接. 基於長連接,伺服器可以主動向客戶端推送消息, 客戶端收到推送消息來展示給用戶.
3.推送的實現方式:
方案1-push: 客戶端與伺服器維護一個TCP/IP的長連接,當有推送消息時,直接向客戶端push.
方案2-pull: 客戶端定時向伺服器pull請求.
兩種方式相比較而言, 方案1更合理更有效, 方案2會存在客戶端不能長久在後台存活以及消耗電量以及消耗流量等問題.
4.iOS推送:
蘋果官方推送: APNS. APNS是由蘋果官方維護的, 屬於系統級別,所以推送消息比較穩定.
iOS的所有推送信息, 都會發送到蘋果伺服器,然後由蘋果伺服器下發到客戶端.
5.Android推送:
谷歌官方推送: FCM. FCM是由谷歌官方維護的,同iOS一樣, 所有推送信息都會發送到谷歌伺服器,再由谷歌下發到客戶端.
由於谷歌推送不能在國內使用, 所以需要Android開發者自己去維護長連接.
6.Android推送開發:
方案1: MQTT推送, 此推送是由IBM提出的輕量級的推送, 客戶端與伺服器之間通過心跳包來監測對方是否存在,然後通過訂閱&發布來實現消息的推送.但是缺點也很明顯,當客戶端被殺死後會無法收到推送.
方案2: 第三方推送, 如騰訊信鴿, 友盟+, 極光推送,小米推送等.目前很多Android的APP在國內都是使用第三方的推送.
方案3: 公司基於XMPP協議開發. 谷歌的推送也是基於XMPP協議開發的.
❺ android消息推送原理是怎麼樣的
主要介紹其中的五種實現方式:短輪詢、Comet、Flash XMLSocket、Server-sent、WebSocket1、短輪詢
指在特定的的時間間隔(如每10秒),由瀏覽器對伺服器發出HTTP request,然後由伺服器返回最新的數據給客戶端的瀏覽器。瀏覽器做處理後進行顯示。無論後端此時是否有新的消息產生,都會進行響應
2、Comet
包括了長輪詢和長連接,長輪詢是客戶端向伺服器發送Ajax請求,伺服器接到請求後hold住連接,直到有新消息才返回響應信息並關閉連接,客戶端處理完響應信息後再向伺服器發送新的請求;長連接是在頁面中的iframe發送請求到服務端,服務端hold住請求並不斷將需要返回前端的數據封裝成調用javascript函數的形式響應到前端,前端不斷收到響應並處理
3、Flash XMLSocket
在 HTML 頁面中內嵌入一個使用了 XMLSocket 類的 Flash 程序。JavaScript 通過調用此 Flash 程序提供的socket介面與伺服器端的socket進行通信。JavaScript 在收到伺服器端以 XML 格式傳送的信息後可以很容易地控制 HTML 頁面的內容顯示
4、Server-sent
伺服器推指的是HTML5規范中提供的服務端事件EventSource,瀏覽器在實現了該規范的前提下創建一個EventSource連接後,便可收到服務端的發送的消息,實現一個單向通信。客戶端進行監聽,並對響應的信息處理顯示
5、WebSocket
WebSocket是HTML5下一種新的協議,是基於TCP的應用層協議,只需要一次連接,便可以實現全雙工通信,客戶端和服務端可以相互主動發送消息。客戶端進行監聽,並對響應的消息處理顯示
針對自己系統的應用場景選擇合適的推送方案才是合理的,因此最後簡單說一下實現個性化推送的兩種方式。第一種很簡單,直接使用第三方實現的推送,無需復雜的開發運維,直接可以使用。第二種就是自己封裝,可以選擇如今較為火熱的WebSocket來實現系統的推送。
關於第三方推送平台,極光推送,操作簡單,穩定性高,送達率快