對於推送服務方式的總結-

鑑於如今運營需求的加強,消息推送在Android開發中應用的場景是十分常見 android

下面羅列一些主流的框架模式,不過整體分爲兩種方式:一種是push一種是pullios

其本質是:服務器

服務器有更新信息<-->  app ---主動推送給  用戶  另一個客戶端app網絡

做用:app

·        產品角度:功能須要,如:資訊類產品的新聞推送、工具類產品的公告推送等等框架

·        運營角度:活動運營須要,如:電商類產品的促銷活動;召回用戶 / 提升活躍度等等工具

android和ios推送區別:.net

總結下Android平臺下幾種推送方案的基本狀況以及優缺點:代理

1、使用GCM(Google Cloude Messaging)server

Android自帶的推送GCM能夠幫助開發人員給他們的Android應用程序發送數據。它是一個輕量級的消息,告訴Android應用程序有新的數據要從服務器獲取,或者它多是一個消息,其中包含了4KB的payload data(像即時通信這類應用程序能夠直接使用該payload消息)。GCM服務處理排隊的消息,並把消息傳遞到目標設備上運行的Android應用程序。

優勢:Google提供的服務、原生、簡單,無需實現和部署服務端。

缺點:1.要求Android 2.2以上,對於很多2.2之前的系統無法推送;

     2.國內服務不穩定。並且很多國內的終端廠商紛紛把Google的服務去掉,替換上本身的。

     3.須要用戶綁定Google帳號,但很多國內用戶沒有Google帳號。

2、使用XMPP協議(Openfire+Spark+Smark

XMPP是一種基於XML的協議,它繼承了在XML環境中靈活的發展性,有很強的可擴展性。包括上面講的GCM服務器底層也是採用XMPP協議封裝的。

優勢:協議成熟、強大、可擴展性強、目前主要應用於許多聊天系統中,且已有開源的Java版的開發實例androidpn。

缺點:協議較複雜、冗餘(基於XML)、費流量、費電,部署硬件成本高。

而androidpn(Android Push Notification)就是基於 XMPP 開源組件的一套整合方案,服務端基於Openfire、客戶端基於Smack。到AndroidPN項目主頁( http://sourceforge.net/projects/androidpn/ ) 下載2個文件: androidpn-server-0.5.0-bin.zip 和 androidpn-client-0.5.0.zip 分別是服務器和客戶端的代碼。詳細的實現方式網上有很多文章。

  1.androidpn服務端重啓後客戶端不會重連,這個很是悲劇

  2.因爲服務器不保存消息,形成了若是客戶端當前離線就收不到消息

  3.androidpn發送完消息就無論了,因此沒有消息回執報表之類,形成無法作應用後續的數據分析用戶體驗的改善,這對於企業級的應用是個致命傷。

XMPP協議比較費電費流量,這個對當前智能機的消耗太大,在窄帶網絡和不穩定的(手機)網絡都不是最優的選擇。但整體來講,XMPP協議仍是比較成熟的。

3、使用MQTT協議(想了解更多能夠看http://mqtt.org/)

輕量級的、基於代理的「發佈/訂閱」模式的消息傳輸協議。

優勢:協議簡潔、小巧、可擴展性強、省流量、省電,目前已經應用到企業領域(參考: http://mqtt.org/software),且已有C++版的服務端組件rsmb。

缺點:不夠成熟、實現較複雜、服務端組件rsmb不開源,部署硬件成本較高。

4、HTTP輪循方式

定時向HTTP服務端接口(Web Service API)獲取最新消息。

優勢:實現簡單、可控性強,部署硬件成本低。

缺點:實時性差。

5、採用第三方服務

就是前面介紹的第三方推送,客戶端只須要導入第三方提供的lib庫,有第三方管理長鏈接,負責消息的接收/發送。同時對消息都有比較詳細的報表數據,能夠用於作數據分析、挖掘,改善用戶體驗。

解決方案沒有優劣,要具具體使用場景而定。但通常來講,我的建議使用第三方平臺推送,成本低+抵達率高

相關文章
相關標籤/搜索