Android幾種消息推送方案總結(jié)
首先看一張國內(nèi)Top500 Android應(yīng)用中它們用到的第三方推送以及所占數(shù)量:

現(xiàn)在總結(jié)下Android平臺(tái)下幾種推送方案的基本情況以及優(yōu)缺點(diǎn):
一、使用GCM(Google Cloude Messaging)
Android自帶的推送GCM可以幫助開發(fā)人員給他們的Android應(yīng)用程序發(fā)送數(shù)據(jù)。它是一個(gè)輕量級的消息,告訴Android應(yīng)用程序有新的數(shù)據(jù)要從服務(wù)器獲取,或者它可能是一個(gè)消息,其中包含了4KB的payload data(像即時(shí)通訊這類應(yīng)用程序可以直接使用該payload消息)。GCM服務(wù)處理排隊(duì)的消息,并把消息傳遞到目標(biāo)設(shè)備上運(yùn)行的Android應(yīng)用程序。
優(yōu)點(diǎn):Google提供的服務(wù)、原生、簡單,無需實(shí)現(xiàn)和部署服務(wù)端。
缺點(diǎn):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ā)展性,有很強(qiáng)的可擴(kuò)展性。包括上面講的GCM服務(wù)器底層也是采用XMPP協(xié)議封裝的。
優(yōu)點(diǎn):協(xié)議成熟、強(qiáng)大、可擴(kuò)展性強(qiáng)、目前主要應(yīng)用于許多聊天系統(tǒng)中,且已有開源的Java版的開發(fā)實(shí)例androidpn。
缺點(diǎn):協(xié)議較復(fù)雜、冗余(基于XML)、費(fèi)流量、費(fèi)電,部署硬件成本高。
而androidpn(Android Push Notification)就是基于 XMPP 開源組件的一套整合方案,服務(wù)端基于Openfire、客戶端基于Smack。到AndroidPN項(xiàng)目主頁( http://sourceforge.net/projects/androidpn/ ) 下載2個(gè)文件: androidpn-server-0.5.0-bin.zip 和 androidpn-client-0.5.0.zip 分別是服務(wù)器和客戶端的代碼。詳細(xì)的實(shí)現(xiàn)方式網(wǎng)上有不少文章。
1.androidpn服務(wù)端重啟后客戶端不會(huì)重連,這個(gè)非常悲劇
2.由于服務(wù)器不保存消息,造成了如果客戶端當(dāng)前離線就收不到消息
3.androidpn發(fā)送完消息就不管了,所以沒有消息回執(zhí)報(bào)表之類,造成沒法做應(yīng)用后續(xù)的數(shù)據(jù)分析用戶體驗(yàn)的改善,這對于企業(yè)級的應(yīng)用是個(gè)致命傷。
XMPP協(xié)議比較費(fèi)電費(fèi)流量,這個(gè)對當(dāng)前智能機(jī)的消耗太大,在窄帶網(wǎng)絡(luò)和不穩(wěn)定的(手機(jī))網(wǎng)絡(luò)都不是最優(yōu)的選擇。但總體來說,XMPP協(xié)議還是比較成熟的。
三、使用MQTT協(xié)議(想了解更多可以看http://mqtt.org/)
輕量級的、基于代理的“發(fā)布/訂閱”模式的消息傳輸協(xié)議。
優(yōu)點(diǎn):協(xié)議簡潔、小巧、可擴(kuò)展性強(qiáng)、省流量、省電,目前已經(jīng)應(yīng)用到企業(yè)領(lǐng)域(參考: http://mqtt.org/software),且已有C++版的服務(wù)端組件rsmb。
缺點(diǎn):不夠成熟、實(shí)現(xiàn)較復(fù)雜、服務(wù)端組件rsmb不開源,部署硬件成本較高。
四、HTTP輪循方式
定時(shí)向HTTP服務(wù)端接口(Web Service API)獲取最新消息。
優(yōu)點(diǎn):實(shí)現(xiàn)簡單、可控性強(qiáng),部署硬件成本低。
缺點(diǎn):實(shí)時(shí)性差。
五、采用第三方服務(wù)
就是前面介紹的第三方推送,客戶端只需要導(dǎo)入第三方提供的lib庫,有第三方監(jiān)理長連接,負(fù)責(zé)消息的接收/發(fā)送。同時(shí)對消息都有比較詳細(xì)的報(bào)表數(shù)據(jù),可以用于做數(shù)據(jù)分析、挖掘,改善用戶體驗(yàn)。
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
Android 獲取手機(jī)聯(lián)系人實(shí)例代碼詳解
最近做了個(gè)項(xiàng)目,其中有項(xiàng)目需求是這樣的,需要獲取手機(jī)聯(lián)系人,下面小編把代碼分享給大家,供大家參考2015-12-12
創(chuàng)建Android守護(hù)進(jìn)程實(shí)例(底層服務(wù))
這篇文章主要介紹了創(chuàng)建Android守護(hù)進(jìn)程實(shí)例(底層服務(wù)),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Android中RecyclerView實(shí)現(xiàn)分頁滾動(dòng)的方法詳解
RecyclerView實(shí)現(xiàn)滾動(dòng)相信對大家來說都不陌生,但是本文主要給大家介紹了利用Android中RecyclerView實(shí)現(xiàn)分頁滾動(dòng)的思路和方法,可以實(shí)現(xiàn)翻頁功能,一次翻一頁,也可以實(shí)現(xiàn)翻至某一頁功能。文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。2017-04-04
Android實(shí)現(xiàn)視頻播放--騰訊瀏覽服務(wù)(TBS)功能
TBS視頻播放器可以支持市面上幾乎所有的視頻格式,包括mp4, flv, avi, 3gp, webm, ts, ogv, m3u8, asf, wmv, rm, rmvb, mov, mkv等18種視頻格式。這篇文章主要介紹了Android實(shí)現(xiàn)視頻播放--騰訊瀏覽服務(wù)(TBS),需要的朋友可以參考下2018-07-07
SQLiteStudio優(yōu)雅調(diào)試Android手機(jī)數(shù)據(jù)庫Sqlite(推薦)
這篇文章主要介紹了SQLiteStudio優(yōu)雅調(diào)試Android手機(jī)數(shù)據(jù)庫Sqlite的相關(guān)資料,需要的朋友可以參考下2017-11-11
Android屬性動(dòng)畫實(shí)現(xiàn)炫酷的登錄界面
這篇文章主要為大家詳細(xì)介紹了Android屬性動(dòng)畫實(shí)現(xiàn)炫酷的登錄界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07
一篇文章弄懂Android自定義viewgroup的相關(guān)難點(diǎn)
這篇文章主要給大家介紹了關(guān)于如何通過一篇文章弄懂Android中自定義viewgroup的一些相關(guān)難點(diǎn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06
Android消息通知Notification常用方法(發(fā)送消息和接收消息)
最近在做消息通知類Notification的相關(guān)業(yè)務(wù),利用閑暇時(shí)間總結(jié)一下,主要分為兩部分來記錄:發(fā)送消息和接收消息,對Android消息通知相關(guān)知識(shí)感興趣的朋友一起看看吧2024-02-02
Android開發(fā)基于ViewPager+GridView實(shí)現(xiàn)仿大眾點(diǎn)評橫向滑動(dòng)功能
這篇文章主要介紹了Android開發(fā)基于ViewPager+GridView實(shí)現(xiàn)仿大眾點(diǎn)評橫向滑動(dòng)功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09

