採用XMPP協議實現Android推送

來源:互聯網
上載者:User

http://fqj183-8041380.blog.163.com/blog/static/39955797201301052742170/  

有用到的兄弟門 ,希望大家一同研究  相互協助

在 開發Android和iPhone應用程式時,我們往往需要從伺服器不定的向手機用戶端即時推送各種通知訊息,iPhone上已經有了比較簡單的和完美的 推播通知解決方案,可在Android平台上實現起來卻相對比較麻煩,最近就對Android的推播通知服務進行初步的研究。

 

在Android手機平台上,Google提供了C2DM(Cloudto Device Messaging)服務,起初我就是準備採用這個服務來實現Android手機上的推送功能。

Android Cloud to Device Messaging (C2DM)是一個用來協助開發人員從伺服器向Android應用程式發送資料的服務。該服務提供了一個簡單的、輕量級的機制,允許伺服器可以通知行動裝置 App 程式直接與伺服器進行通訊,以便於從伺服器擷取應用程式更新和使用者資料。C2DM服務負責處理諸如訊息排隊等事務並向運行於目標裝置上的應用程式分發這些 訊息。

但這個服務存在很大的問題:

1、C2DM內建於Android的2.2系統上,無法相容老的1.5到2.1系統;

2、C2DM需要依賴於Google官方提供的C2DM伺服器,由於國內的網路環境,這個服務經常不可用,如果想要很好的使用,我們的App Server必須也在國外。這個可能不是每個開發人員或公司能實現的。

所以最終我放棄了這個方案。採用XMPP協議實現Android推送,事實上Google官方的C2DM伺服器底層也是採用XMPP協議進行的封裝。

XMPP(可擴充通訊和表示協議)是基於可延伸標記語言 (XML)(XML)的協議,它用於立即訊息(IM)以及線上探測。這個協議可能最終允許網際網路使用者向網際網路上的其他任何人傳送立即訊息。

androidpn是一個基於XMPP協議的java開源Android push notification實現。它包含了完整的用戶端和伺服器端。

 

androidpn的實現如下:

 

androidpn用戶端需要用到一個基於java的開源XMPP協議包asmack,這個包同樣也是基於openfire下的另外一個開源項目smack,
不過我們不需要自己編譯,可以直接把androidpn用戶端裡面的asmack.jar拿過來用。用戶端利用asmack中提供的 XMPPConnection類與伺服器建立持久串連,並通過該串連進行使用者註冊和登入認證,同樣也是通過這條串連,接收伺服器發送的通知。

androidpn 伺服器端也是java語言實現的,基於openfire開源工程,它的Web部分採用的是spring架構。Androidpn伺服器包含兩個部分,一個 是偵聽在5222連接埠上的XMPP服務,負責與用戶端的XMPPConnection類進行通訊,作用是使用者註冊和身份認證,並發送推播通知訊息。另外一 部分是Web伺服器,採用一個輕量級的HTTP伺服器,負責接收使用者的Web請求。伺服器架構如下:

最上層包含四個組成 部分,分別是SessionManager,Auth Manager,PresenceManager以及Notification Manager。SessionManager負責管理用戶端與伺服器之間的會話,Auth Manager負責用戶端使用者認證管理,Presence Manager負責管理用戶端使用者的登入狀態,NotificationManager負責實現伺服器向用戶端推送訊息功能。

伺服器端介面如下,分別對應了上述的幾個功能模組:

 

 

 

 下載了用戶端代碼後需修改androidpn.properties檔案中的xmppHost的地址,如下:

 

點擊Submit發送以後,可以在Android手機端看到接收的訊息如下

點擊OK按鈕可以進行相應的URI跳轉。

該解決方案的最大優勢就是簡單,並且避免了C2DM的兩個問題。利用XMPP協議我們還可以進一步的對協議進行擴充,實現更完善的功能。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.