轉(zhuǎn)載請注明出處:http://www.cnblogs.com/Joanna-Yan/p/6241354.html 首先看一張國內(nèi)Top500 Android應(yīng)用中它們用到的第三方推送以及所占數(shù)量: 現(xiàn)在總結(jié)下Android平臺下幾種推送方案的基本情況以及優(yōu)缺點: 一、使用GCM(Google Cloude Messaging) Android自帶的推送GCM可以幫助開發(fā)人員給他們的Android應(yīng)用程序發(fā)送數(shù)據(jù)。它是一個輕量級的消息,告訴Android應(yīng)用程序有新的數(shù)據(jù)要從服務(wù)器獲取,或者它可能是一個消息,其中包含了4KB的payload data(像即時通訊這類應(yīng)用程序可以直接使用該payload消息)。GCM服務(wù)處理排隊的消息,并把消息傳遞到目標設(shè)備上運行的Android應(yīng)用程序。 優(yōu)點:Google提供的服務(wù)、原生、簡單,無需實現(xiàn)和部署服務(wù)端。 缺點:1.要求Android 2.2以上,對于不少2.2以前的系統(tǒng)沒法推送; 2.國內(nèi)服務(wù)不穩(wěn)定。而且不少國內(nèi)的終端廠商紛紛把Google的服務(wù)去掉,替換上自己的。 3.需要用戶綁定Google賬號,但不少國內(nèi)用戶沒有Google賬號。 二、使用XMPP協(xié)議(Openfire Spark Smark) XMPP是一種基于XML的協(xié)議,它繼承了在XML環(huán)境中靈活的發(fā)展性,有很強的可擴展性。包括上面講的GCM服務(wù)器底層也是采用XMPP協(xié)議封裝的。 優(yōu)點:協(xié)議成熟、強大、可擴展性強、目前主要應(yīng)用于許多聊天系統(tǒng)中,且已有開源的Java版的開發(fā)實例androidpn。 缺點:協(xié)議較復(fù)雜、冗余(基于XML)、費流量、費電,部署硬件成本高。 而androidpn(Android Push Notification)就是基于 XMPP 開源組件的一套整合方案,服務(wù)端基于Openfire、客戶端基于Smack。到AndroidPN項目主頁( http:///projects/androidpn/ ) 下載2個文件: androidpn-server-0.5.0-bin.zip 和 androidpn-client-0.5.0.zip 分別是服務(wù)器和客戶端的代碼。詳細的實現(xiàn)方式網(wǎng)上有不少文章。 1.androidpn服務(wù)端重啟后客戶端不會重連,這個非常悲劇 2.由于服務(wù)器不保存消息,造成了如果客戶端當(dāng)前離線就收不到消息 3.androidpn發(fā)送完消息就不管了,所以沒有消息回執(zhí)報表之類,造成沒法做應(yīng)用后續(xù)的數(shù)據(jù)分析用戶體驗的改善,這對于企業(yè)級的應(yīng)用是個致命傷。 XMPP協(xié)議比較費電費流量,這個對當(dāng)前智能機的消耗太大,在窄帶網(wǎng)絡(luò)和不穩(wěn)定的(手機)網(wǎng)絡(luò)都不是最優(yōu)的選擇。但總體來說,XMPP協(xié)議還是比較成熟的。 三、使用MQTT協(xié)議(想了解更多可以看http:///) 輕量級的、基于代理的“發(fā)布/訂閱”模式的消息傳輸協(xié)議。 優(yōu)點:協(xié)議簡潔、小巧、可擴展性強、省流量、省電,目前已經(jīng)應(yīng)用到企業(yè)領(lǐng)域(參考: http:///software),且已有C 版的服務(wù)端組件rsmb。 缺點:不夠成熟、實現(xiàn)較復(fù)雜、服務(wù)端組件rsmb不開源,部署硬件成本較高。 四、HTTP輪循方式 定時向HTTP服務(wù)端接口(Web Service API)獲取最新消息。 優(yōu)點:實現(xiàn)簡單、可控性強,部署硬件成本低。 缺點:實時性差。 五、采用第三方服務(wù) 就是前面介紹的第三方推送,客戶端只需要導(dǎo)入第三方提供的lib庫,有第三方監(jiān)理長連接,負責(zé)消息的接收/發(fā)送。同時對消息都有比較詳細的報表數(shù)據(jù),可以用于做數(shù)據(jù)分析、挖掘,改善用戶體驗。 |
|