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

(1)注冊(cè):Android設(shè)備把使用C2DM功能的用戶賬戶(比如android.c2dm.demo@gmail.com)和App名稱發(fā)送給C2DM服務(wù)器。
(2)C2DM服務(wù)器會(huì)返回一個(gè)registration_id值給Android設(shè)備,設(shè)備需要保存這個(gè)registration_id值。
(3)Android設(shè)備把獲得的registration_id和C2DM功能的用戶賬戶(android.c2dm.demo@gmail.com)發(fā)送給自己的服務(wù)器,不過(guò)一般用戶賬戶信息因?yàn)楹头?wù)器確定好的,所以不必發(fā)送。
這樣Android設(shè)備就完成了C2DM功能的注冊(cè)過(guò)程,接下來(lái)就可以接收C2DM服務(wù)器Push過(guò)來(lái)的消息了。
(4)服務(wù)器獲得數(shù)據(jù)。這里圖中的例子Chrome To Phone,服務(wù)器接收到Chrome瀏覽器發(fā)送的數(shù)據(jù)。數(shù)據(jù)也可以是服務(wù)器本地產(chǎn)生的。這里的服務(wù)器是Google AppEngine(很好的一項(xiàng)服務(wù),可惜在國(guó)內(nèi)被屏了),要換成自己的服務(wù)器。服務(wù)器還要獲取注冊(cè)使用C2DM功能的用戶賬戶(android.c2dm.demo@gmail.com)的ClientLogin權(quán)限Auth。
(5)服務(wù)器把要發(fā)送的數(shù)據(jù)和registration_id一起,并且頭部帶上獲取的Auth,使用POST的方式發(fā)送給C2DM服務(wù)器。
(6)C2DM服務(wù)器會(huì)以Push的方式把數(shù)據(jù)發(fā)送給對(duì)應(yīng)的Android設(shè)備,Android設(shè)備只要在程序中按之前和服務(wù)器商量好的格式從對(duì)應(yīng)的key中獲取數(shù)據(jù)即可。
轉(zhuǎn)自: