android推送學習——google的C2DM
在開發Android和iPhone應用程序時,我們往往需要從服務器不定的向手 機客戶端即時推送各種通知消息,iPhone上已經有了比較簡單的和完美的推送通知解決方案,可是Android平臺上實現起來卻相對比較麻煩,最近利用 幾天的時間對Android的推送通知服務進行初步的研究。
在Android手機平臺上,Google提供了C2DM(Cloudto Device Messaging)服務。
Android Cloud to Device Messaging (C2DM)是一個用來幫助開發者從服務器向Android應用程序發送數據的服務。該服務提供了一個簡單的、輕量級的機制,允許服務器可以通知移動應用程序直接與服務器進行通信,以便于從服務器獲取應用程序更新和用戶數據。C2DM服務負責處理諸如消息排隊等事務并向運行于目標設備上的應用程序分發這些消息。
使用C2DM框架的要求
使用C2DM框架的要求
1. 需要Android2.2及以上的系統版本
2. 使用C2DM功能的Android設備上需要設置好Google的賬戶。
3. C2DM需要依賴于Google官方提供的C2DM服務器,由于國內的網絡環境,這個服務經常不可用,如果想要很好的使用,我們的App Server必須也在國外,這個恐怕不是每個開發者都能夠實現的
2. 使用C2DM功能的Android設備上需要設置好Google的賬戶。
3. C2DM需要依賴于Google官方提供的C2DM服務器,由于國內的網絡環境,這個服務經常不可用,如果想要很好的使用,我們的App Server必須也在國外,這個恐怕不是每個開發者都能夠實現的
要使用C2DM來進行Push操作,基本上要使用以下6個步驟


(1)注冊:Android設備把使用C2DM功能的用戶賬戶(比如android.c2dm.demo@gmail.com)和App名稱發送給C2DM服務器。
(2)C2DM服務器會返回一個registration_id值給Android設備,設備需要保存這個registration_id值。
(3)Android設備把獲得的registration_id和C2DM功能的用戶賬戶(android.c2dm.demo@gmail.com)發送給自己的服務器,不過一般用戶賬戶信息因為和服務器確定好的,所以不必發送。
這樣Android設備就完成了C2DM功能的注冊過程,接下來就可以接收C2DM服務器Push過來的消息了。
(4)服務器獲得數據。這里圖中的例子Chrome To Phone,服務器接收到Chrome瀏覽器發送的數據。數據也可以是服務器本地產生的。這里的服務器是Google AppEngine(很好的一項服務,可惜在國內被屏了),要換成自己的服務器。服務器還要獲取注冊使用C2DM功能的用戶賬戶(android.c2dm.demo@gmail.com)的ClientLogin權限Auth。
(5)服務器把要發送的數據和registration_id一起,并且頭部帶上獲取的Auth,使用POST的方式發送給C2DM服務器。
(6)C2DM服務器會以Push的方式把數據發送給對應的Android設備,Android設備只要在程序中按之前和服務器商量好的格式從對應的key中獲取數據即可。
轉自:
(2)C2DM服務器會返回一個registration_id值給Android設備,設備需要保存這個registration_id值。
(3)Android設備把獲得的registration_id和C2DM功能的用戶賬戶(android.c2dm.demo@gmail.com)發送給自己的服務器,不過一般用戶賬戶信息因為和服務器確定好的,所以不必發送。
這樣Android設備就完成了C2DM功能的注冊過程,接下來就可以接收C2DM服務器Push過來的消息了。
(4)服務器獲得數據。這里圖中的例子Chrome To Phone,服務器接收到Chrome瀏覽器發送的數據。數據也可以是服務器本地產生的。這里的服務器是Google AppEngine(很好的一項服務,可惜在國內被屏了),要換成自己的服務器。服務器還要獲取注冊使用C2DM功能的用戶賬戶(android.c2dm.demo@gmail.com)的ClientLogin權限Auth。
(5)服務器把要發送的數據和registration_id一起,并且頭部帶上獲取的Auth,使用POST的方式發送給C2DM服務器。
(6)C2DM服務器會以Push的方式把數據發送給對應的Android設備,Android設備只要在程序中按之前和服務器商量好的格式從對應的key中獲取數據即可。
轉自:
posted on 2011-12-29 17:57 胡鵬 閱讀(1168) 評論(0) 編輯 收藏 所屬分類: android