Android推播通知指南及C2DM機制介紹

來源:互聯網
上載者:User

在開發Android和iPhone應用程式時,我們往往需要從伺服器不定的向手機用戶端即時推送各種通知訊息。

訊息通知

解決方案有兩種:

1 輪詢(Poll)

   應用程式應當階段性的與伺服器進行串連並查詢是否有新的訊息到達,你必須自己實現與伺服器之間的通訊,例如訊息排隊等。而且你還要考慮輪詢的頻率,如果太慢可能導致某些訊息的延遲,如果太快,則會大量消耗網路頻寬和電池。

  然而,每5分鐘輪詢一次,長期下去,會消耗手機10%的電量。

2 Push

  a)簡訊SMS。在Android平台上,你可以通過攔截SMS訊息並且解析訊息內容來瞭解伺服器的意圖。服務端用特定號碼給特定裝置發送命令。裝置根據收到的命令執行操作。但是問題是這個方案的成本相對比較高,你很難找到免費的短訊息發送網關。

  b)持久串連(Persistent connection)。這個方案可以解決由輪詢帶來的效能問題,但是還是會消耗手機的電池。Android作業系統會維持一個長串連,只是維持串連的話,對電量消耗較小,對消耗電量的對比,見:Android C2DM Presentation at O'Reilly AndroidOpen Conference。

 Android從2.2版本開始增加了Cloud to Device Messaging(C2DM)架構,在系統中支援了Push功能,基於Android平台使用Push功能更加簡單了。雖然C2DM目前還處在實驗室階段,不過小規模的使用應該沒問題。

 

C2DM架構

使用Android的C2DM功能有幾個要求:

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

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

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

我們接下來C2DM的一個完整過程,這裡借用一下Google官方推出的Chrome To Phone過程圖來說明下。

圖1 C2DM操作過程圖

要使用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中擷取資料即可。

 

   對C2DM的分析以及程式碼範例,可以參見:Android Cloud to Device Messaging (C2DM) - Tutorial

 

自己實現Push機制

XMPP(可擴充通訊和表示協議)是基於可延伸標記語言 (XML)(XML)的協議,它用於立即訊息(IM)以及線上探測。事實上Google官方的C2DM伺服器底層也是採用XMPP協議進行的封裝。

如何自己實現,見:Android推播通知指南

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.