全部产品
云市场

自定义MQTT Topic通信

更新时间:2018-12-22 21:00:13

iOS SDK 提供了与云端Mqtt长连接的基础能力接口,用户可以直接使用这些接口完成自定义 Topic 相关的功能。提供的基础能力包括:发布、订阅、取消订阅、订阅下行。可以通过这部分接口实现云端数据的上下行。

说明:此部分介绍的接口都需要在Mqtt长连接通道建立成功的情况下才可以调用。

上行接口请求

调用上行请求接口,SDK封装了上行发布相关接口。使用方法示例如下:

  1. NSString * topic = self.textFieldPubTopic.text;
  2. NSString * content = self.textViewPubContent.text;
  3. NSInteger iQos = [self.textFieldQos.text integerValue];//qos = 0 or 1
  4. [[LinkKitEntry sharedKit] publish:topic
  5. data:[content dataUsingEncoding:NSUTF8StringEncoding]
  6. qos:(int)iQos
  7. resultBlock:^(BOOL succeeded, NSError * _Nullable error) {
  8. LinkkitLogDebug(@"kit publish error : %@", error);
  9. dispatch_async(dispatch_get_main_queue(), ^{
  10. [self ims_showHUDWithMessage:[NSString stringWithFormat:@"Linkkit 上行数据 : %@",
  11. succeeded ? @"成功" : @"失败"]];
  12. });
  13. }];

说明:1、关于qos取值,目前阿里云IoT平台只支持 qos取值为[0,1],对于qos=2目前不支持。2、IoT云端对于数据上下行有限流设计,请参见 使用限制

订阅/取消订阅

若设备希望从某个topic接收数据,需要先对该topic进行订阅;如果不再希望接收到来自某个topic的数据,可以取消对该topic的订阅。

订阅示例代码:

  1. - (IBAction)onClickSubscribe:(id)sender {
  2. NSString * topic = self.textFieldSubTopic.text;
  3. [[LinkKitEntry sharedKit] subscribe:topic
  4. resultBlock:^(BOOL succeeded, NSError * _Nullable error) {
  5. LinkkitLogDebug(@"kit subscribe error : %@", error);
  6. dispatch_async(dispatch_get_main_queue(), ^{
  7. [self ims_showHUDWithMessage:[NSString stringWithFormat:@"Linkkit 订阅topic : %@,",
  8. succeeded ? @"成功" : @"失败"]];
  9. });
  10. }];
  11. }

取消订阅示例代码:

  1. - (IBAction)onClickUnsubscribe:(id)sender {
  2. NSString * topic = self.textFieldSubTopic.text;
  3. [[LinkKitEntry sharedKit] unsubscribe:topic
  4. resultBlock:^(BOOL succeeded, NSError * _Nullable error) {
  5. LinkkitLogDebug(@"kit unsubscribe error : %@", error);
  6. dispatch_async(dispatch_get_main_queue(), ^{
  7. [self ims_showHUDWithMessage:[NSString stringWithFormat:@"Linkkit 取消订阅topic : %@,",
  8. succeeded ? @"成功" : @"失败"]];
  9. });
  10. }];
  11. }

下行数据监听

订阅Topic成功后,还需要注册 listener来监听,SDK才会把此Topic的数据上抛。在 “认证与连接” 章节中,已经描述了如何注册listener来侦听下推数据,同时提供了示例代码,请参阅。