關於服務器端向Android客戶端的推送,主要有三種方式:
1.客戶端定時去服務端取或者保持一個長Socket,從本質講這個不叫推送,這是去服務端拽數據。可是實現簡單,主要缺點:耗電等
2.Google的C2DM,具體不細說,缺點,服務器在國外,你懂得,不是很穩定。
3.XMPP協議,它是一種基於XML的傳遞協議,具備很強的靈活性和可擴展性。它的特色是將複雜性從客戶端轉移到了服務器端。
據說GTalk、QQ、IM等都用這個協議。android
在Android中實現信息推送,其中一個比較成熟的解決方案即是使用XMPP協議實現。而AndroidPn項目就是使用XMPP協議實現信息推送的一個開源項目。在這裏給你們介紹其使用過程。
Apndroid Push Notification的特色:
快速集成:提供一種比C2DM更加快捷的使用方式,避免各類限制.
無需架設服務器:經過使用"雲服務",減小額外服務器負擔.
能夠同時推送消息到網站頁面,android 手機
耗電少,佔用流量少.
具體配置過程:
首先, 咱們須要下載androidpn-client-0.5.0.zip和androidpn-server-0.5.0-bin.zip。
下載地址:http://sourceforge.net/projects/androidpn/
解壓兩個包,Eclipse導入client,配置好目標平臺,打開raw/androidpn.properties文件,配置客戶端程序。
1. 如 果是模擬器來運行客戶端程序,把xmppHost配置成10.0.2.2[模擬器把10.0.2.2認爲是所在主機的地址,127.0.0.1是模擬器本 身的迴環地址,10.0.2.1表示網關地址,10.0.2.3表示DNS地址,10.0.2.15表示目標設備的網絡地址],關於模擬器的詳細信息,大 家可參閱相關資料,這裏再也不詳述.
xmppPort=5222 是服務器的xmpp服務監聽端口
運 行androidpn-server-0.5.0inun.bat啓動服務器,從瀏覽器訪問http://127.0.0.1:7070 /index.do (androidPN Server有個輕量級的web服務器,在7070端口監聽請求,接受用戶輸入的文本消息)
運行客戶端,客戶端會向服務器發起鏈接請求,註冊成功後,服務器能識別客戶端,並維護和客戶端的IP長鏈接。
2. 若是是在同一個局域網內的其餘機器的模擬器測試(或者使用同一無線路由器wifi上網的真機) ,則須要把這個值設置爲服務器機器的局域網ip.
例 如 你的電腦和android手機 都經過同一個無線路由器wifi上網, 電腦的ip地址爲 192.168.1.2 而 手機的ip地址爲 192.168.1.3, 這個時候 須要把這個值修改成 xmppHost=192.168.1.1 或是電腦的IP地址,就能夠在手機上使用了.
3. 若是是不在同一個局域網的真機測試,咱們須要將這個值設置爲服務器的IP地址。
具體配置以下圖所示:
git
個人電腦IP是:192.168.8.107
服務器運行主界面:
推送信息:
web
測試結果以下圖:瀏覽器
模擬器和真機測試經過。
其餘使用過程介紹:
固然了,以上是在本身的服務器上配置並實現信息推送,若是你們想省事的話,在這裏給你們推薦個網址, 能夠更輕鬆地實現推送,缺點是須要經過別人的服務器,關於這點,你懂的。
網址:http://www.push-notification.org/
只需申請個API便可使用。服務器
另:網絡
測試可用代碼,地址:測試
客戶端:http://git.oschina.net/cstslqq/AndroidPNClient網站
服務端 :http://git.oschina.net/cstslqq/AndroidPNServer.net