Android 推送之原理與初觸Androidpn(Android Push Notification)

由於最近項目中涉及到了android推送,所以看了一些關於android推送方面的東西,總結到後面我們知道android推送的實現可以歸結爲3種:

1、POLL,拉。大致思路爲向服務器定時的發送請求,然後自己讓服務器返回信息。

優點:實現簡單。

缺點:實時性差。如果定時間隔小連接數又多,對服務器會有高壓力要求。據說還會費電……不知道是不是真的。


2、SMS,彩信方式。據說是攔截彩信,並解析內容。這個還沒有動手實踐過。

優點:實現簡單。實時性也好。

缺點:SMS服務的成本問題。貴!


3、TCP/IP,持久的長連接。簡單的說就是與服務器建立一個基於TCP/IP持久連接,然後服務器就可以給你發消息了。

優點:實時性好。

缺點:實現起來比較困難。據說也會比較費電……也沒測試過。


POLL的比較簡單,用Timer和TimerTask定時器,以及HTTP相關的幾個類就可以實現基本的功能,然後自己解析服務器返回信息。

主要是關於持久長連接的實現:1、基於IBM的MQTT實現。 2、基於XMPP實現

基於XMPP實現的有一個Androidpn項目,開源的。雖然後面項目中我採用了MQTT。因爲Androidpn不夠成熟,裏面有一些bug,我暫時無法修掉。因爲我只看了Android端的源代碼,也許有些bug需要根據服務端修改。(困擾我很久的問題是服務器重啓後androidpn手機端無法重連,暫時放下了,等有需要再去啃它

其項目源碼在這裏可以下:http://sourceforge.net/projects/androidpn/ 進去之後的Files標籤裏有3個資源:

androidpn-server 服務器端代碼

androidpn-demoapp 實例(說實話,沒什麼用)

androidpn-client 手機端代碼


補充:我記得再導入項目後可能會出現:unable to resolve target ‘google inc. : Google APIs :7’這樣的錯誤提示。

解決方法: 項目右鍵,Properties,Resource,Text file encoding,other,選擇UTF-8 

                                                             Android,Project Build Target,選擇Android1.5

最後OK。

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