複製鏈接
請複製以下鏈接發送給好友

C2DM

鎖定
Android Cloud to Device Messaging (C2DM) 作為 Android 2.2 的一部分已經發布了。C2DM 允許第三方開發者開發相關的應用來推送少量數據消息(1024bytes)到用户的手機上。C2DM 創造了一個良好的機會,允許我們使用多種 Google 開發工具來創建一種簡單但相當實用的應用類型。用户可以使用該類型的應用把各種各樣的信息從他們的台機或者筆電直接 push 到自家的手機上。
C2DB已經過時·C2DM服務將在短期內結束,將不再接受新用户·c2dm開放人員請用Google Cloud Messaging (GCM).GCM是下代C2DM.

C2DM基礎知識

當我們開發需要和服務器交互的應用程序時,基本上都需要獲取服務器端的數據,比如《地震及時通》就需要及時獲取服務器上最新的地震信息。要獲取服務器上不定時更新的信息一般來説有兩種方法,第一種是客户端使用Pull(拉)的方式,隔一段時間就去服務器上獲取信息,看是否有更新的信息出現。第二種就是服務器使用Push(推送)的方式,當服務器端有新信息了,則把最新的信息Push到客户端上。
雖然Pull和Push兩種方式都能實現獲取服務器端更新信息的功能,但是明顯來説Push is better than pull。因為Pull方式更費客户端的網絡流量,更主要的是費電量。
Android從2.2版本開始增加了Cloud to Device Messaging(C2DM)框架,在系統中支持了Push功能,基於Android平台使用Push功能更加簡單了。雖然C2DM還處在實驗室階段,不過小規模的使用應該沒問題。 [1] 

C2DM框架使用

使用Android的C2DM功能有幾個要求:
1. 需要Android2.2及以上的系統版本。
2. 使用C2DM功能的Android設備上需要設置好Google的賬户。
3. 需要在這裏註冊使用C2DM功能的用户郵箱賬號(最好為C2DM單獨註冊一個Gmail郵箱賬號)。
要使用C2DM來進行Push操作,基本上要使用以下6個步驟:
(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] 

C2DM中國服務

C2DM服務要求強制用户有一個Gmail帳户,因為大部分中國用户沒有Gmail帳户,主流品牌的三星,HTC,摩托等手機都不支持默認Gmail帳户登錄,所以C2DM在中國的應用收到很大限制,絕大部分手機無法使用。但是push服務的需求依然存在。中國市場也有兩家公司提供了類似的服務,而且支持中國所有手機。
一家是由聊天軟件公司個信 轉型推出的 個推平台,已被 新浪微博91等公司採用,特點是支持文件加密透傳,收到回執系統完善,支持頁面羣發,省電性較好。 [1] 
參考資料