Android 幾種消息推送方案總結

来源:http://www.cnblogs.com/Joanna-Yan/archive/2017/01/01/6241354.html
-Advertisement-
Play Games

轉載請註明出處:http://www.cnblogs.com/Joanna-Yan/p/6241354.html 首先看一張國內Top500 Android應用中它們用到的第三方推送以及所占數量: 現在總結下Android平臺下幾種推送方案的基本情況以及優缺點: 一、使用GCM(Google Clo ...


轉載請註明出處:http://www.cnblogs.com/Joanna-Yan/p/6241354.html

首先看一張國內Top500 Android應用中它們用到的第三方推送以及所占數量:

現在總結下Android平臺下幾種推送方案的基本情況以及優缺點:

一、使用GCM(Google Cloude Messaging)

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

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

缺點:1.要求Android 2.2以上,對於不少2.2以前的系統沒法推送;

     2.國內服務不穩定。而且不少國內的終端廠商紛紛把Google的服務去掉,替換上自己的。

     3.需要用戶綁定Google賬號,但不少國內用戶沒有Google賬號。

二、使用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協議還是比較成熟的。

三、使用MQTT協議(想瞭解更多可以看http://mqtt.org/)

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

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

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

四、HTTP輪循方式

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

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

缺點:實時性差。

五、採用第三方服務

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 先看下麵的html: 計算div內的checkbox個數:$('#divmod input[type="checkbox"]').length 計算div內checkbox被disabled的個數:$('#divmod input[type="checkbox"]:disabled').length ...
  • 禁用:.attr("disabled","disabled"); 啟用:.removeAttr("disabled"); ...
  • 一、AJAX示例1.1、優點1.2、缺點1.3、jQuery AJAX示例二、延遲對象(Deferred)2.1、回調函數2.2、deferred.done三、跨域3.1、什麼是跨域3.2、JSONP跨域3.3、jQuery使用JSONP跨域3.4、跨域資源共用(CORS)3.5、小結四、彈出層五、... ...
  • 一、前端MVC概要 1.1、庫與框架的區別 框架是一個軟體的半成品,在全局範圍內給了大的約束。庫是工具,在單點上給我們提供功能。框架是依賴庫的。AngularJS是框架而jQuery則是庫。 1.2、AMD與CMD 在傳統的非模塊化JavaScript開發中有許多問題:命名衝突、文件依賴、跨環境共用 ...
  • 查看npm的所有版本 運行命令: 命令運行後,會輸出到目前為止npm的所有版本。 將npm升級到某個版本。 升級前本機版本號是2.14.12,可通過npm -v查看。 命令運行,升級到3.1.0版: 升級完成後,查看一下本機npm的版本,就是升級後的版本。 參考: Updating npm ...
  • 01.01_電腦基礎知識(電腦概述)(瞭解) A:什麼是電腦?電腦在生活中的應用舉例 電腦(Computer)全稱:電子電腦,俗稱電腦。是一種能夠按照程式運行,自動、高速處理海量數據的現代化智能電子設備。由硬體和軟體所組成,沒有安裝任何軟體的電腦稱為裸機。常見的形式有台式電腦、筆記本 ...
  • 一、下載並安裝class-dump 下載class-dump-3.5.dmg 點擊下載 下載完成以後雙擊.dmg的文件,將裡面的class-dump拷貝到/usr/local/bin 設置許可權chmod 777 /usr/local/bin/class-dump 在控制台輸入class-dump,顯 ...
  • JDK安裝與配置 一、下載 JDK是ORACLE提供免費下載使用的,官網地址:https://www.oracle.com/index.html 一般選擇Java SE版本即可,企業版的選擇Java EE 下載的JDK版本(目前最新的是JDK8u112) JDK的開發包以及相關的文檔下載 勾選同意, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...