MQTT之阿里雲接受推送訊息

2021-07-22 19:11:36 字數 1977 閱讀 6901

mqtt是

一種輕量級的協議(mq telemetry transport),適合於低頻寬、不可靠連線、嵌入式裝置、cpu、記憶體資源緊張,適用於各種受限的環境。

2、協議特徵

(1)訊息模型

mqtt是一種基於**的發布/訂閱的訊息協議。提供一對多的訊息分發,解除應用程式耦合。乙個發布者可以對應多個訂閱者,當發布者發生變化的時候,他可以將訊息一一通知給所有的訂閱者。這種模式提供了更大的網路擴充套件性和更動態的網路拓撲。

(2)訊息質量

mqtt提供三種質量的服務:

1)至多一次,可能會出現丟包的現象。使用在對實時性要求不高的情況。這一級別可應用於如下情景,如環境感測器資料,丟失一次讀記錄無所謂,因為很快下一次讀記錄就會產生。

2)至少一次,保證包會到達目的地,但是可能出現重包。

3)正好一次,保證包會到達目的地,且不會出現重包的現象。這一級別可用於如計費系統等場景,在計費系統中,訊息丟失或重複可能會導致生成錯誤的費用。

(3)主題名稱

主題名稱(topic name)用來標識已發布訊息的資訊的渠道。訂閱者用它來確定接收到所關心的資訊。它是乙個分層的結構,用斜線「/」作為分隔符。有兩種萬用字元可以在主題發布、訂閱時使用:「#」和「+」。前者可以通配多層結構,而後者只能通配一層結構。例如乙個topic : 「a/b/c」,則「a/+/c」和「a/#」都可以和它相等。發布不支援模糊匹配,必須是確定的主題。

4)遺屬

當乙個客戶端斷開連線的時候,它希望客戶端可以傳送它指定的訊息。該訊息和普通資訊的結構相同。通過設定該位並填入和資訊相關的內容即可。

(5)訊息型別

reserved0保留

connect1客戶

在做專案時遇到阿里雲的mqtt資訊接受和推送服務,整了好久沒正好,最後一位大神給了乙個他新寫的demo,一用就ok,和大家分享下。

大神的mqtt庫的github位址你把它用cocoapods編譯一下就行了。

下面是**的註冊資訊,特別提示我這裡的self

.kclientid,self.ktopic是活的可變的,大家可以根據自己的情況決定。

mqttcfsockettransport

*transport = [[

mqttcfsockettransport

alloc

] init

];transport.

host

=kserverhost

;transport.

port

=1883

;mqttsession

*session = [[

mqttsession

alloc

] init

];session.

transport

= transport;

session.

clientid

=self

.kclientid

;session.

username

=kname

;session.

password

=kpassword

;session.

delegate

=self

;[session

connectandwaittimeout:20

]; //this is part of the synchronous api

[session

subscribetotopic

:self

.ktopic

atlevel:2

subscribehandler

:^(nserror

*error,

nsarray

<

nsnumber

*> *gqoss)

else

}];

阿里雲訊息推送服務

移動推送 提供從雲端到移動終端的優質推送服務,支援android和ios平台的通知 訊息的推送功能 推送內容及模式 推送方式 按裝置號推送,在客戶端呼叫getdeviceld獲得裝置號,再通過控制台 openapi介面推送 名詞解釋 accesskeyld和accesskeysecret 阿里雲使用...

android訊息推送 mqtt協議

對與訊息推送是什麼個概念,在此就不贅述啦。google自帶的c2md服務,可以幫助我們實現該功能,可以該伺服器在國外,所以鑑於網速等各種條件限制,我們也沒法實現。為解決該問題,在讀了大量的部落格等質料之後,終於見到啦陽光。第三個是由ibm提供的mqtt協議的實現,就相當於乙個 開啟1883埠,在se...

mosquitto 基於MQTT訊息推送

mosquitto note 基於mqtt訊息推送 要解決的問題是 給android手機做訊息推送 自已搭建訊息推送後台 端 中轉訊息,守護程序 mosquitto 傳送訊息客戶端 mosquitto pub 接收訊息客戶端 mosquitto sub 管理密碼檔案 mosquitto passwd...