失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > MQTT之阿里云接受推送消息

MQTT之阿里云接受推送消息

时间:2021-09-16 20:02:17

相关推荐

MQTT之阿里云接受推送消息

MQTT是一种轻量级的协议(MQTelemetryTransport),适合于低带宽、不可靠连接、嵌入式设备、CPU、内存资源紧张,适用于各种受限的环境。

2、协议特征

(1)消息模型

MQTT是一种基于代理的发布/订阅的消息协议。提供一对多的消息分发,解除应用程序耦合。一个发布者可以对应多个订阅者,当发布者发生变化的时候,他可以将消息一一通知给所有的订阅者。这种模式提供了更大的网络扩展性和更动态的网络拓扑。

(2)消息质量

MQTT提供三种质量的服务:

1)至多一次,可能会出现丢包的现象。使用在对实时性要求不高的情况。这一级别可应用于如下情景,如环境传感器数据,丢失一次读记录无所谓,因为很快下一次读记录就会产生。

2)至少一次,保证包会到达目的地,但是可能出现重包。

3)正好一次,保证包会到达目的地,且不会出现重包的现象。这一级别可用于如计费系统等场景,在计费系统中,消息丢失或重复可能会导致生成错误的费用。

(3)主题名称

主题名称(Topic name)用来标识已发布消息的信息的渠道。订阅者用它来确定接收到所关心的信息。它是一个分层的结构,用斜线“/”作为分隔符。有两种通配符可以在主题发布、订阅时使用:“#”和“+”。前者可以通配多层结构,而后者只能通配一层结构。例如一个topic : “a/b/c”,则“a/+/c”和“a/#”都可以和它相等。发布不支持模糊匹配,必须是确定的主题。

4)遗属

当一个客户端断开连接的时候,它希望客户端可以发送它指定的消息。该消息和普通消息的结构相同。通过设置该位并填入和信息相关的内容即可。

(5)消息类型

在做项目时遇到阿里云的MQTT信息接受和推送服务,整了好久没正好,最后一位大神给了一个他新写的DEmo,一用就OK,和大家分享下。

大神的MQTT库的github地址/ckrey/MQTT-Client-Framework,你把它用Cocoapods编译一下就行了。

下面是代码的注册信息,特别提示我这里的self.KClientID,self.KTopic是活的可变的,大家可以根据自己的情况决定。

MQTTCFSocketTransport *transport = [[MQTTCFSocketTransportalloc] init];

transport.host =KServerHost;

transport.port =1883;

MQTTSession *session = [[MQTTSessionalloc] init];

session.transport = transport;

session.clientId=self.KClientID;

session.userName=KName;

session.password=Kpassword;

session.delegate =self;

[sessionconnectAndWaitTimeout:20];//this is part of the synchronous API

[sessionsubscribeToTopic:self.KTopicatLevel:2subscribeHandler:^(NSError *error,NSArray<NSNumber *> *gQoss) {

if (error) {

NSLog(@"Subscription failed %@", error.localizedDescription);

}else {

NSLog(@"Subscription sucessfull! Granted Qos: %@", gQoss);

}

}];

如果觉得《MQTT之阿里云接受推送消息》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。