導航:首頁 > 操作系統 > mqttandroid推送

mqttandroid推送

發布時間:2022-12-14 09:31:23

android消息推送GCM、XMPP、MQTT三種方案的優劣,越仔細越好,有具體分析更好!

android消息推送GCM、XMPP、MQTT三種方案的優劣:
1、GCM服務(Google Cloud Messaging)優點:Google提供的服務、原生、簡單,無需實現和部署服務端。缺點:Android版本限制,該服務在國內不夠穩定、需要用戶綁定Google帳號,受限於Google。
2、XMPP協議(Openfire + Spark + Smack)優點:協議成熟、強大、可擴展性強、目前主要應用於許多聊天系統中,且已有開源的Java版的開發實例androidpn。缺點:協議較復雜、冗餘(基於XML)、費流量、費電,部署硬體成本高。
3、MQTT協議優點:協議簡潔、小巧、可擴展性強、省流量、省電,目前已經應用到企業領域,且已有C++版的服務端組件rsmb。缺點:不夠成熟、實現較復雜、服務端組件rsmb不開源,部署硬體成本較高。
d消息推送可以去了解一下極光,極光是個不錯的平台。極光緊密圍繞移動開發者需求,打造的開發者服務平台,可以提供一站式SaaS服務,通過全面覆蓋PC、手機、感測器、無線路由器等多種設備數據,打造全域數據平台。當前,不斷更新的SaaS產品及服務已深受國內百萬開發者的認可和信賴。

② 怎麼實現伺服器給android客戶端主動推送消息

採用MQTT協議實現Android推送功能是一種解決方案。MQTT是一個輕量級的消息發布/訂閱協議,是實現基於手機客戶端的消息推送伺服器的理想解決方案。

常見的解決方案實現原理:

1、輪詢(Pull)方式:客戶端定時向伺服器發送詢問消息,一旦伺服器有變化則立即同步消息。

2、SMS(Push)方式:通過攔截SMS消息並且解析消息內容來了解伺服器的命令,但這種方式一般用戶在經濟上很難承受。

3、持久連接(Push)方式:客戶端和伺服器之間建立長久連接,這樣就可以實現消息的及時行和實時性。

(2)mqttandroid推送擴展閱讀:

推送消息注意事項:

1、支持第三方推送內容,是要客戶端和伺服器都支持的,客戶端和伺服器都導入推送SDK。

2、伺服器推送內容,可以精確指定推送時間,推送的具體接收人,用戶群,位置。

3、即推送的維度可以使時間,位置,人群。

4、極光使用了兩種不同的通知方式,一種是推送通知,一種是推送消息。

5、如果要使用androidpn,則還需要做大量的工作,需要理解XMPP協議、理解Androidpn的實現機制,需要調試內部存在的BUG。

參考資料來源:網路-伺服器

參考資料來源:網路-Android客戶端

參考資料來源:網路-信息推送

③ android消息推送怎麼實現

極光推送可以輕松實現android消息推送。具有操作步驟如下:
1、到極光官網注冊賬號:https://www.jpush.cn/
2、創建應用,按照要求填寫你的應用名稱,包名提交
3、下載案例,一般情況測試是能收到信息的
4、集成到自己的項目中,按照官網的集成http://docs.jpush.cn/pages/viewpage.action?pageId=557214
5、集成時將注意的要點,官網上也有說,但是我再強調一下要注意兩個許可權的包名填寫,有可能直接用案例上的拷貝到自己的manifest中時沒有替換掉包名,切記,要替換成自己的項目的包名。
極光推送已經覆蓋了近10億Android、IOS終端,30多萬款APP應用,服務總用戶數超過30億,每天消息推送量達5億多條,已成為移動應用數據平台。極光分享幫助應用具備國內主流社交平台分享功能,提供新浪微博、QQ、微信等第三方社會化分享服務,提高產品推廣效率,幫助產品提高用戶體驗,獲得更多用戶。

④ 如何採用mqtt協議實現android消息推送

使用一個代理伺服器message broker,客戶端client連接上這個伺服器,然後告訴伺服器,可以接收哪些類型的消息,同時client也可以發布自己的消息,這些消息根據協議的內容,可以別的client獲取。這樣就實現了消息推送。
消息推送是通過一定的技術標准或協議,在互聯網上通過定期傳送用戶需要的信息來減少信息過載的一項新技術。
如果想要使用消息推送,推薦使用深圳極光的消息推送系統。深圳極光是國內首個為移動應用開發者提供專業、高效的消息推送服務的產品。品牌成長的過程,就是與客戶肩並肩邁向成功的過程。極光將以市場為導向,以創新為動力,以技術為支持,不斷用心努力,為每一位尊貴的客戶提供極致的服務。

⑤ Android MQTT 通信

  MQTT 協議 是基於發布/訂閱模式的物聯網通信協議,憑借簡單易實現、支持 QoS、報文小等特點,占據了物聯網協議的半壁江山。
  常用於 IOT 物聯網和一些需要服務端主動通知客戶端的場景。

1. 導入依賴

2. 創建 MqttHelper 輔助類,設置回調監聽

3. 連接 MQTT

  連接成功或失敗,以及中途的連接掉線,會觸發 OnMqttStatusChangeListener 回調

4. MQTT 連接狀態監聽

5. MQTT 收發消息監聽

  onSubMessage 訂閱的消息回調,因為存在訂閱多個 topic 的情況,所以回調能知道是來自哪個 Topic 的消息;
  onPubMessage 發布的消息回調,用於確認發布的消息是否發送成功。

6. MQTT 訂閱 Topic

  需要在 MQTT 連接成功後才能訂閱 topic,否則訂閱 Topic 不成功,收不到對應消息

7. MQTT 取消訂閱 Topic

8. MQTT 發布消息

9. MQTT 斷開連接

10. 通知設置
  由於 MQTT 啟動了一個 Service,而 Android 8.0 以上對於後台 Service 限制時長 5 秒;所以將 MqttService 綁定到 Notification 上成為了一個前台通知;通知的標題和內容顯示可以在 strings.xml 中設置,對應屬性如下:

  Android 8.0 及以上開啟前台服務綁定到通知,8.0 以下默認不啟用,可將 mqtt_foreground_notification_low_26 設為 true,將 8.0 以下設備也開啟前台通知服務

  創建 MQTT 實例時需要傳送參數 MqttOptions,下面將介紹下部分參數;

1. Topic
  MQTT 是一種發布/訂閱的消息協議, 通過設定的主題 Topic,
發布者向 Topic 發送的 payload 負載消息會經過伺服器, 轉發到所有訂閱
該 Topic 的訂閱者
   通配符 : 假想移動端消息推送場景,有的系統消息是全體用戶接收,有的消息是 Android 或 iOS 設備接收, 又或者是某些消息具體推送到用戶,當然, 對應的多種類型消息可以通過多訂閱幾個對應的 Topic 解決,也可以使用通配符;
  通配符有兩個, " + " 和 " # ", 與正斜杠 " / " 組合使用;加號只能表示一級Topic, 井號可以表示任意層級 Topic; 例如: 訂閱 Topic為 " System/+ ", 發布者發布的 Topic 可以是 System、System/Android、System/iOS; 但是不能是 System/iOS/123, 而訂閱的 Topic 如果是" System/# " 則可以收到;
   注意,只有訂閱的 Topic 才可以使用 通配符, 發布和遺囑的 Topic 不能包含通配符.

2. ClientID
  發布者和訂閱者都是屬於客戶端, 客戶端與服務端建立連接之後,發送的第一個報文消息必須是 Connect 消息,而 Connect 的消息載荷中必須包含 clientID 客戶端唯一標識;
  如果兩個客戶端的 clientID 一樣, 則服務端記錄第一個客戶端連接之後再收到第二個客戶端連接請求,則會向一個客戶端發送 Disconnect 報文斷開連接, 並連接第二個客戶端, 而如果此時設置了自動重連, 第一個客戶端再次連接,服務端又斷開與第二個的連接, 連上第一個客戶端, 如此將導致兩個客戶端不斷的被擠掉重連.
  注意: clientID 使用的字元最好是 大小寫字母和數字, 長度最好限制在[1, 23] 之間;

3. 遺囑消息
  可選參數, 客戶端沒有主動向服務端發起 disconnect 斷開連接消息,然而服務端檢測到和客戶端之間的連接已斷開, 此時服務端將該客戶端設置的遺囑消息發送出去
  應用場景: 客戶端因網路等情況掉線之後, 可以及時通知到所有訂閱該遺囑 Topic 的客戶端;
  遺囑 Topic 中不能存在通配符.

4. Session
  客戶端和服務端之間建立的會話狀態, 一般用於消息保存, 如果設置清除 Session,則每次客戶端和服務端建立連接會創建一個新的會話,之前連接中的消息不能恢復,
  而設置不清除會話, 對應發布者發送的 qos 為 1和2 的消息,還未被訂閱者接收確認,則需要保存在會話中, 以便訂閱者下次連接可以恢復這些消息;
  注意: Session 存儲的消息是保存在內容中的, 所以如果不是重要的消息,最好是設置清除 Session, 或者設置 qos = 0;

5. 心跳包
  標識客戶端傳輸一次控制報文到下一次傳輸之間允許的空閑時間;在這段時間內,如果客戶端沒有其他任何報文發送,必須發送一個 PINGREQ 報文到伺服器,而如果服務端在 1.5 倍心跳時間內沒有收到客戶端消息,則會主動斷開客戶端的連接,發送其遺囑消息給所有訂閱者。而服務端收到 PINGREQ 報文之後,立即返回 PINGRESP 報文給客戶端
  心跳時間單位為秒,佔用2個位元組,最大 2^16 - 1 = 65535秒(18小時12分鍾15秒),設置為 0 表示不使用心跳機制; 心跳時間一般設置為幾分鍾或幾十秒即可,時間短點可以更快的發出遺囑消息通知掉線,但是時間短會增加消息頻率,影響服務端並發; 微信長連接為 300 秒,而三大運營商貌似也有個連接時間最小的為 5 分鍾。

6. qos
  服務質量等級 qos 對應兩部分,一是客戶端到服務端發送的消息, 一是服務端到客戶端訂閱的消息; 從發布者到訂閱者實際 qos 為兩段路中 qos 最小的。
  qos 可選值 0(最多交付一次)、1(最少交付一次)、2(正好交付一次);
   qos = 0 :接收方不發送響應,發送方不進行重試;發送方只管發一次,不管是否發成功,也不管接收方是否成功接收,適用於不重要的數據傳輸;
   qos = 1 :確保消息至少有一次到達接收方,發送方向接收方發送消息,需要等待接收方返回應答消息,如果發送方在一定時間之內沒有收到應答,發送方繼續下一次消息發送,直到收到應答消息,刪除本地消息緩存,不再發送;所以接收方可能收到1-n次消息;適用於需要收到所有消息,客戶端可以處理重復消息。
   qos = 2 :確保消息只一次到達接收方,發送方和接收方之間消息處理流程最復雜;
   Mqtt Qos 深度解讀 MQTT協議QoS2 准確一次送達的實現

7. payload 負載消息
  位元組流類型, 是 MQTT 通信傳輸的真實數據

8. 保留消息
  發布消息時設置, 對應參數 retain, 服務端將保留對應 Topic 最新的一條消息記錄; 保留消息的作用是每次客戶端連接上線都會收到其 Topic 的最後一條保留消息, 所以可能存在網路不穩定,頻繁掉線重連,每次重連重復收到保留消息;
   可以向對應的 Topic 發送一條 空消息,用於清除保留消息。

MQTT 服務搭建 Apache Apollo 伺服器 搭建 MQTT 服務
Github 倉庫
mqtt 協議

⑥ android消息推送GCM、XMPP、MQTT三種方案的優劣是什麼

android消息推送GCM、XMPP、MQTT三種方案的優劣如下:
1、GCM
(1)優點:提供的服務、原生、簡單,無需實現和部署的服務端。
(2)缺點:Android版本限制(必須大於2.2版本),該服務在國內不夠穩定、需要用戶綁定相關的Google帳號,而且只受限於Google。
2、XMPP
(1)優點:成熟、強大、可擴展也性強、目前主要應用於聊天系統中,且已有開源的Java版的開發實例androidpn。
(2)缺點:協議較復雜、冗餘(基於XML)、也比較費流量和費電,部署硬體成本高。
3、MQTT
(1)優點:簡潔、小巧、可擴展性強、是比較省流量、省電。目前已有C++版的服務端組件rsmb。
(2)缺點:不夠成熟、實現起來較復雜、服務端組件rsmb不開源,也是部署硬體成本較高。
消息推送軟體可以使用深圳極光的。極光成立於2011年;憑借領先的人工智慧及機器學習技術,極光將在APP消息推送、用戶增長與活躍等方面為客戶提供服務。

⑦ Android 中使用MQTT(第一篇)

MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)是IBM開發的一個即時通訊協議。它是一種發布/訂閱,極其簡單和輕量級的消息傳遞協議,專為受限設備和低帶寬,高延遲或不可靠的網路而設計。它的設計思想是輕巧、開放、簡單、規范,易於實現。這些特點使得它對很多場景來說都是很好的選擇,特別是對於受限的環境如機器與機器的通信(M2M)以及物聯網環境。相對於XMPP,MQTT更加輕量級,並且佔用的寬頻低。

MQTT協議有以下特點:

那麼問題來了?重連連接成功後重復接收到最後一條消息
MQTT推送消息訂閱端重復接收問題。
(背景)訂閱端斷開的時候,發布端多次推送消息。
(現象)訂閱端啟動時,接收到最後一條推送消息有兩次;即使Qos設置為2;依然是兩次。
經排查是因為
MqttMessage的Retained設置為了true;
該值很多文章上只說了是 消息保留機制,若設置為true,mqtt伺服器會保留每次發布的消息;較少提到 若訂閱某主題的客戶端重啟,則會把此主題之前發布的消息重新推送到客戶端。該值默認為false;去掉修改該值即可
那麼問題來了?重連連接後手動那麼多遺漏的消息,怎麼選擇只接收最新的一條消息呢?
MQTT推送消息訂閱端重復接收問題。
(背景)訂閱端斷開的時候,發布端多次推送消息。
(現象)訂閱端啟動時,接收到msg1,msg2,msg3 (這三個消息都是同一個類型消息,只需要處理最新的msg3就好,不然界面會刷新三次)這個誰有什麼好辦法沒呢?

GitHub地址: https://github.com/eclipse/paho.mqtt.android
mqtt的官方文檔: http://mqtt.org/documentation
Github上有中文翻譯: https://github.com/mcxiaoke/mqtt

在mole的build.gradle文件中添加依賴

在 AndroidManifest.xml 添加限權

在 AndroidManifest.xml 注冊Service (MyMqttService為自己寫的服務,下文會講到)

閱讀全文

與mqttandroid推送相關的資料

熱點內容
斐波那契數列矩陣演算法 瀏覽:674
公式保護後加密不了 瀏覽:82
java跳轉到jsp 瀏覽:819
327平方根演算法 瀏覽:216
win7美化命令行終端 瀏覽:797
免加密狗圖片 瀏覽:485
一隻透明的鳥是什麼app 瀏覽:817
空氣壓縮機油批發商 瀏覽:69
linuxifexist 瀏覽:4
加密tf卡拷入文件 瀏覽:399
山西php工資 瀏覽:673
福州看病預約用什麼小程序app 瀏覽:238
php保留兩位小數不四捨五入 瀏覽:292
黑馬程序員路徑大全 瀏覽:1000
saas平台PHP 瀏覽:333
雲伺服器科學計算配置怎麼選 瀏覽:649
jar解壓命令 瀏覽:609
php正則問號 瀏覽:299
無線已加密不可上網是怎麼了 瀏覽:465
什麼app可以免費做手機 瀏覽:376