1. 程式人生 > >android通過xmpp實現伺服器到客戶端的推送功能

android通過xmpp實現伺服器到客戶端的推送功能

  最近專案中要做推送功能,除了自己知道的友盟推送外還不知道其它的實現方式,於是就上網百度了一下要實現推送的基本途徑,發現主要還有以下幾種方式。

  1.客戶端建立一個socket,與伺服器端的serversocket連線,其實就是客戶端與伺服器一直保持連線,這個其實本質上不能算是推送,只是利用了長連線這一技術實現了揈 送的功能,需要在後臺一直啟動一個服務與伺服器保持連線才可以,還要處理許多意外的情況,如:服務被強制關掉,無法在手機關機的情況下推送等等。總之要處理的情況比較多,不太容易全部處理好。

  2.Google的C2DM,具體不細說,缺點,伺服器在國外,你懂得,不是很穩定。有興趣的可以自己去百度學習。

  3.XMPP協議,它是一種基於 XML的傳遞協議,具有很強的靈活性和可擴充套件性,它的特點是將工作的複雜性從客戶端移到了伺服器端。QQ等軟體用的也都是基於XMPP協議的推送。

 下面就說一下,如何搭建好XMPP伺服器和客戶端,並實現推送的功能。

  1.伺服器的搭建:xmpp專案組開源了一個小型的伺服器,一般情況下這個小型的伺服器已經可以滿足我們的需求了。稍後我們把整個demo工程(伺服器和客戶端)上傳到我的資源裡,有需要的可以下載,只要將客戶端和伺服器執行起來,就可以實現推送功能了。步驟:1)下載好伺服器原始碼後,解壓,進入整個伺服器專案的bin目錄下,點選run.bat,將伺服器程式啟動起來。2)等伺服器程式完全跑起來後,在瀏覽器中輸入127.0.0.1:7070,進入伺服器控制頁面,頁面截圖如下:

看到此圖,表明伺服器正常啟動,下面說一下幾個選項卡的用途,home卡就是一個歡迎頁面,表示伺服器正常啟動,Users卡記錄了所有與該伺服器連線成功過的客戶端,以一個列表的形式列出,Sessions列出所有當前線上的客戶端,Notifications卡則是我們主動傳送推送的地方。

   2.建立客戶端:下載好xmpp客戶程式,匯入eclipse後執行時,總是報ClassNotFound,於是自己仿照這的客戶端做了一個,可以正常的執行起來,客戶端一執行起來後就與推送伺服器連線成功,連線成功可以看到伺服器上此使用者的狀態,如圖,則表示連線成功:

    3.連線成功後,我們就可以向我們的客戶端傳送推送訊息了,傳送成功截圖:

  


  利用xmpp可以很輕易的搭建一個推送伺服器與客戶端出來,下面將我的整個工程傳上來,大家可以下載去試。要想成功連線到伺服器,需要將res/raw/androidpc.property檔案中的xmhost改為你要請求的伺服器地址才可連線成功。