Android平臺的信息推送實現

  最近有幸負責參與開發公司的CMPP短信網關程序,採用的是Apache Mina框架實現。通過該項目對Socket通信、長連接有了更深一步的理解,於是就想試試將Mina用到Android平臺的信息推送上。經過了解發現,目前已經有不少成型的框架能夠實現Android平臺的信息推送,特別是AndroidPn。

        平時我們開發手機客戶端,都少不了要於服務器交互,那麼當服務器端有新的數據時,客戶端是怎麼知道的呢?一般可以採用如下兩種方式來實現:

        1)客戶端定期(每隔一段時間,輪詢)向服務器發起請求,以檢測是否有新的數據。如果輪詢的頻率太慢,可能導致獲取的信息已經過時;如果輪詢的頻率過快會很耗電、耗手機流量;

        2)採用Android的廣播機制,攔截服務端發送的短信。即當服務器端有新的數據時,服務器向所有Android客戶端發送短信,客戶端基於廣播機制將短信攔截並通過手機客戶端應用呈現。該方案成本較高,需要向電信運營商申請短信發送端口。

        以上兩種實現方式多少都存在着弊端,並不能真正滿足要求,那有沒有更好的實現方式呢?當然有,那就是信息推送。推送就意味着當有新的數據時,服務器端會主動將數據“推”到客戶端,而不需要客戶端不停地檢測。這裏就不再過多地對“信息推送”進行解釋了,下面將直接通過一個AndroidPn示例來演示。

        AndroidPn即Android Push Notification,它是Android平臺的信息推送框架,基於XMPP協議的Java實現,它包含了完整的服務器端和客戶端程序。因此,我們不用開發一行代碼,就能體驗到信息推送,還在等什麼,馬上動手吧。AndroidPn框架的下載地址:http://sourceforge.net/projects/androidpn/files/,將以下文件全部下載:

        

其中,androidpn-server是服務端程序,它包含可執行腳本,能夠直接啓動運行;android-demoapp是演示示例,一會就直接用它來演示;androidpn-client是客戶端源代碼,你可以用它來研究androidpn的內部實現。

         第一步:啓動androidpn服務端程序。即點擊運行android-server-0.5.0\bin\run.bat。啓動完成後,可以通過瀏覽器訪問到如下界面:

        

一會就是通過這個界面向Android手機客戶端推送信息。

        第二步:啓動androidpn客戶端程序。將下載的androidpn-demoapp解壓並導入到eclipse中,如下圖所示:

        

接着將工程中res/raw/androidpn.properties文件裏的xmppHost改爲10.0.2.2或者你本機的IP地址,如果不明白爲什麼是10.0.2.2,請參考我博客的這篇文章《[020] Android模擬器訪問本地Web應用》。接着在模擬器中運行該程序,截圖如下:

        

        第三步:通過androidpn服務配置界面向客戶端推送信息。回到第一步在瀏覽器中顯示的配置界面,一共有四個選項卡,分別是Home、Users、Sessions和Notifications。其中,Users和Sessions中顯示的是連接到androidpn服務器的客戶端信息,因爲我們剛纔已經在模擬器中運行了androidpn客戶端程序,所以Users和Sessions中是能夠看到一條記錄的,如下圖所示:

        

        

我們最關心的功能在Notifications中,點擊並填入以下推送信息:

        

點擊Submit按鈕,信息將會被推送到客戶端,這時在模擬器的狀態欄中會以通知的形式顯示推送信息,點擊後能夠查看到推送信息的完整內容,因爲在推薦界面的URI中填入了網頁地址,所以點擊OK將會自動打開瀏覽器訪問該地址。

        

           

        好了,關於Android的信息推送就介紹到這裏。接下來需要去深入瞭解下AndroidPn的實現原理(其實想想也應該與Socket長連接有關),然後再嘗試着用Apache Mina來實現信息推送。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章