Android Cloud to Device Messaging (C2DM) 作為 Android 2.2 的一部分已經發布了。C2DM 允許第三方開發者開發相關的套用來推送少量數據訊息(1024bytes)到用戶的手機上。C2DM 創造了一個良好的機會,允許我們使用多種 Google 開發工具來創建一種簡單但相當實用的套用類型。用戶可以使用該類型的套用把各種各樣的信息從他們的台機或者筆電直接 push 到自家的手機上。
C2DB已經過時·C2DM服務將在短期內結束,將不再接受新用戶·c2dm開放人員請用Google Cloud Messaging (GCM).GCM是下代C2DM.
基礎知識,框架使用,中國服務,
基礎知識
當我們開發需要和伺服器互動的應用程式時,基本上都需要獲取伺服器端的數據,比如《地震及時通》就需要及時獲取伺服器上最新的地震信息。要獲取伺服器上不定時更新的信息一般來說有兩種方法,第一種是客戶端使用Pull(拉)的方式,隔一段時間就去伺服器上獲取信息,看是否有更新的信息出現。第二種就是伺服器使用Push(推送)的方式,當伺服器端有新信息了,則把最新的信息Push到客戶端上。
雖然Pull和Push兩種方式都能實現獲取伺服器端更新信息的功能,但是明顯來說Push is better than pull。因為Pull方式更費客戶端的網路流量,更主要的是費電量。
Android從2.2版本開始增加了Cloud to Device Messaging(C2DM)框架,在系統中支持了Push功能,基於Android平台使用Push功能更加簡單了。雖然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過來的訊息了。
(5)伺服器把要傳送的數據和registration_id一起,並且頭部帶上獲取的Auth,使用POST的方式傳送給C2DM伺服器。
(6)C2DM伺服器會以Push的方式把數據傳送給對應的Android設備,Android設備只要在程式中按之前和伺服器商量好的格式從對應的key中獲取數據即可。
中國服務
C2DM服務要求強制用戶有一個Gmail帳戶,因為大部分中國用戶沒有Gmail帳戶,主流品牌的三星,HTC,摩托等手機都不支持默認Gmail帳戶登錄,所以C2DM在中國的套用收到很大限制,絕大部分手機無法使用。但是push服務的需求依然存在。中國市場也有兩家公司提供了類似的服務,而且支持中國所有手機。