1. 程式人生 > >Android推送技術總結

Android推送技術總結

Android平臺接入推送機制一般有兩種,一種是Google官方提供的C2DM雲端推送方案;另外一種是第三方,如極光、個推和友盟等推送平臺。

  1. C2DM雲端推送方案

1)簡單介紹

在Android手機平臺上,Google提供了C2DM(Cloudto Device Messaging)服務。Android Cloud to Device Messaging (C2DM) 作為 Android 2.2 的一部分已經發布了。C2DM 允許第三方開發者開發相關的應用來推送少量資料訊息(1024bytes)到使用者的手機上。C2DM 創造了一個良好的機會,允許我們使用多種 Google 開發工具來建立一種簡單但相當實用的應用型別。使用者可以使用該型別的應用把各種各樣的資訊從他們的PC端直接 push 到自家的手機上。

2)使用條件

(1)需要Android2.2及以上的系統版本。

(2)使用C2DM功能的Android裝置上需要設定好Google的賬戶。

(3)需要在這裡註冊使用C2DM功能的使用者郵箱賬號(最好為C2DM單獨註冊一個Gmail郵箱賬號)

  1. 流程

流程圖如下:

(1)Android裝置把使用C2DM功能的使用者賬戶和App名稱傳送給C2DM伺服器。

(2)C2DM伺服器會返回一個registration_id值給Android裝置,裝置需要儲存這個registration_id值。

(3)Android裝置把獲得的registration_id和C2DM功能的使用者賬戶傳送給自己的伺服器,不過一般使用者賬戶資訊因為和伺服器確定好的,所以不必傳送。這樣Android裝置就完成了C2DM功能的註冊過程,接下來就可以接收C2DM伺服器Push過來的訊息了。

(4)伺服器獲得資料。這裡圖中的例子Chrome To Phone,伺服器接收到Chrome瀏覽器傳送的資料。資料也可以是伺服器本地產生的。這裡的伺服器是Google AppEngine(很好的一項服務,可惜在國內被屏了),要換成自己的伺服器。伺服器還要獲取註冊使用C2DM功能的使用者賬戶的ClientLogin許可權Auth。

(5)伺服器把要傳送的資料和registration_id一起,並且頭部帶上獲取的Auth,使用POST的方式傳送給C2DM伺服器。

(6)C2DM伺服器會以Push的方式把資料傳送給對應的Android裝置,Android裝置只要在程式中按之前和伺服器商量好的格式從對應的key中獲取資料即可。[2-3]

  1. 缺陷

C2DM需要依賴於Google官方提供的C2DM伺服器,由於該伺服器在國內被遮蔽,這個服務經常不可用。

  1. 接入第三方sdk方案

1)簡單介紹

目前國內、國外有一些推送平臺可供使用,例如極光、個推和友盟等。一般以jar包的方式出現,整合在客戶端。以下以個推為例做簡單說明。

2)推送過程解析

個推伺服器一側負責維護與成千上萬的個推SDK的長連線,另一側與第三方伺服器對接,將第三方定製資料下行推送至個推SDK。應用伺服器是資料推送的發起者,通過對接個推伺服器,推送平臺伺服器獲取到資料並解析,並把結果透傳給客戶端。客戶端整合個推sdk喚醒,客戶端接收到推送資料後做出相應處理。

  1. 流程

流程圖如下:

(1)客戶端整合個推SDK,新增配置許可權和註冊資訊。

(2)客戶端啟動的時候,呼叫SDK介面,啟動推送服務,SDK後臺執行並維護和個推服務端的長連線,實現SDK註冊和登入。

(3)應用服務端呼叫個推伺服器的介面,將要傳送的資料通過個推伺服器傳送到指定身份的個推SDK當中。

(4)個推SDK接收並解析定製資料,並且將訊息透傳給客戶端,客戶端根據伺服器的資料做出相應的動作或者展現。

  1. 缺陷

市面上很多管理軟體,如百度管家、手機管家、360安全衛士等,往往將接收推送的許可權和自啟動許可權禁止了。另外,手機系統設定中也是存在這種禁止許可權的開關,比如華為、小米、中興等深度定製的手機,在安裝接入推送的sdk的應用APP時,會預設關閉以上許可權。這樣,使用者就會出現接收不到推送或延遲接收推送的情況。

參考文獻: