基于MQTT協定的實作有三種方式:
1.官方的C2DM,但是隻支援android2.2及以上平台的,而且使用的google的伺服器。
對于google伺服器的問題,網友應該都清楚,天朝的大中華區區域網路總是讓它不時的給你斷一下。
2.第三方的androidpn,和C2DM一樣,都是基于XMPP擴充的,是一個開源的項目,據說不錯。
http://sourceforge.net/projects/androidpn/
但是是基于長連接配接的,如果用戶端數量大,特别像手機這種都是長期線上的裝置,
會有兩個問題,(1)伺服器壓力,(2)手機的電池不夠用啊,電量卡卡卡的被你耗光了(需要優化網絡機制)。
3.使用IBM 的MQTT協定實作push消息
位址:http://tokudu.com/2010/how-to-implement-push-notifications-for-android/
這是一個非常理想的解決方案,是基于tcp協定的,低帶寬通信,而且國外友人已經測試,耗電量很多。
參考位址:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1210/2141.html
前段時間公司需要Android端的手機群推功能,我們就通過MQTT來實作了該功能。
MQTT的官網如下 http://mqtt.org/
關于系統的主要架構就不詳述了。這關系的到職業道德問題,在這裡隻談談MQTT實作推送的功能。
在MQTT官網中http://mqtt.org/software列舉出了實作了該協定的開源用戶端和伺服器工程和庫。
我們是通過ApacheActiveClient開源項目的基礎上來實作的。
下面介紹用戶端和伺服器簡單的搭建:
用戶端 :
首先到github(https://github.com/tokudu/AndroidPushNotificationsDemo)網站上去下載下傳手機用戶端程式:AndroidPushNotificationsDemo.
運作結果如下圖所示 :
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICN4gjMxkTN5ADOwUDMzEDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
其中Test_android1是對手機的唯一辨別,這個生成政策是可以自己來定的。很多時候我們需要話更多的時間去研究它的源碼,而不是去問别人,隻有當自己實在找不到解決方案的時候再問,我覺得這樣更利于我們對項目的了解和繼續擴充。
伺服器端
至于伺服器程式可以到http://activemq.apache.org/去下載下傳。需要注意的是,請讀者仔細閱讀該開源項目的文檔。
該項目非常強大,支援配置伺服器的主從,分布式等。
當你搭建成功伺服器後可以使用用戶端連接配接了。點選Start Push service按鈕啟動推送功能。
連接配接成功後你會在控制台看到如下界面:
在伺服器背景你将看到:
畫的紅線部分就是你的手機裝置,然後單擊進入如下界面:
最後單擊确定 ,在手機通知欄将會收到消息 :
至此,這就是簡單的伺服器想用戶端推送的消息了。
當然這是最最簡單的實作了。接下來就要看自己公司實際的需要進行擴充伺服器或者用戶端了。
其實MQTT最顯著的功能,就是群推。用戶端可以注冊多個token(用戶端的唯一辨別)可以讓所有用戶端都注冊該token即可,然後發送的時候,隻需要針對一個token發消息,那麼所有的手機都收到了。不用像其他的推送一樣,對每個token都去發一遍。是以MQTT群發的效率的極高的。這樣的話對手機端來說就很好了,也許我們需要對某個程式的所有手機發、向某個程式某個版本手機發,向某台手機發推送 等等用MQTT都可以很輕松的實作。
接下來就是要靠自己去研究MQTT了。其他官網文檔,和一些開源的功能已經提供了很多我們學習的資料。
下面是關于XMPP協定推送 :Android消息推送(一)--AndroidPn(XMPP協定)Demo版到正式上線
如果github上面的Android用戶端的程式不能運作,可以下載下傳我們用的(也是github上下載下傳的):
http://download.csdn.net/detail/johnny901114/5820151 如果還有問題可以留言。
轉載出處 : http://blog.csdn.net/johnny901114/article/details/8898727