华为Android SDK接口与阿里云对比

举报
yd_246268034 发表于 2023/06/26 16:35:26 2023/06/26
【摘要】 1、场景说明在开发中遇到Android SDK迁移,对Link进行阿里云与华为云SDK中接口对比对比。以下对比以Android版本为例。2、Aiot Android与 device_SDK_Android 版本接口对比下表为设备端主要接口对比:华为云device_SDK_Android 在 这里 可以获取。调用阿里云接口清单切换华为云接口清单与IoT平台建立连接init与IoT平台建立连接...
  1. 场景说明

    在开发中遇到Android SDK迁移,对Link进行阿里云与华为云SDK中接口对比对比。以下对比以Android版本为例。

  2. Aiot Android device_SDK_Android 版本接口对比

    下表为设备端主要接口对比:

    华为云device_SDK_Android 在 这里 可以获取。

    调用阿里云接口清单

    切换华为云接口清单

    与IoT平台建立连接

    init

    与IoT平台建立连接

    init

    注册下行数据监听器

    registerOnPushListener

    注册下行数据监听器

    registerReceiver

    取消注册下行监听器

    unRegisterOnPushListener

    取消注册下行监听器

    unregisterReceiver

    注销初始化

    deinit

    注销初始化

    close

    发布

    publish

    发布

    publishRawMessage

    订阅

    subscribe

    订阅

    subscribeTopic

    取消订阅

    unsubscribe

    取消订阅

    unsubscribeTopic

    下面对主要接口清单进行逐条参数对比,以及其使用示列。

  3. 参数对比示列

    建立连接

    1. 参数对比。下表为建立连接的主要参数对比:

      阿里云 init

      华为云 init

      参数

      描述

      参数

      描述

      context

      获取上下文

      mContext

      获取上下文

      mqttHost

      设备访问地址\域名

      serverUri

      设备访问地址\域名

      productKey

      物联网平台为产品颁发的标识符

      deviceId


      设备ID


      deviceName

      设备在产品内的标识符

      deviceSecret

      设备密钥

      deviceSecret

      设备密钥

    2. Android SDK华为云使用示例
      // 密钥方式接入 数据生成
      
      IoTDevice device = newIoTDevice(mContext, "ssl://iot-mqtts.cn-north-4.myhuaweicloud.com:8883", "5eb4cd4049a5ab087d7d4861_demo", "secret");
      
      //注册本地广播IotDeviceIntent.ACTION_IOT_DEVICE_CONNECT,用于处理设备初始化后的结果
      
      LocalBroadcastManager.getInstance(this).registerReceiver(connectBroadcastReceiver,newIntentFilter(IotDeviceIntent.ACTION_IOT_DEVICE_CONNECT));
      
      // 广播携带数据
      
      int broadcastStatus = intent.getIntExtra(BaseConstant.BROADCAST_STATUS, BaseConstant.STATUS_FAIL);
      
      switch (broadcastStatus) {
      
          case BaseConstant.STATUS_SUCCESS:
      
              // 设备创建成功
      
              break;
      
          case BaseConstant.STATUS_FAIL:
      
              // 设备创建失败
      
              // 失败原因
      
              Stringerror = intent.getStringExtra(COMMON_ERROR);
      
              break;
      }
      
      // 设备初始化
      device.init();


    注册下行数据监听器

    1. 参数对比

      阿里云 registerOnPushListener

      华为云 registerReceiver

      参数

      描述

      参数

      描述

      IConnectNotifyListener

      回调类的对象

      BroadcastReceiver

      回调类的对象



      IotDeviceIntent

      消息广播类型 参数类型在 IotDeviceIntent.java文件中

    2. 华为云使用示例

      示例为注册属性上报的数据监听器

      // 注册属性上报的数据监听器
      
      LocalBroadcastManager.getInstance(this).registerReceiver(propertyBroadcastReceiver, newIntentFilter(IotDeviceIntent.ACTION_IOT_DEVICE_PROPERTIES_REPORT));
      
      // 广播携带数据
      
      int broadcastStatus = intent.getIntExtra(BaseConstant.BROADCAST_STATUS, BaseConstant.STATUS_FAIL);
      
      switch (broadcastStatus) {
      
          case BaseConstant.STATUS_SUCCESS:
      
              edtLog.append("上报属性成功!" + "\n");
      
              break;
      
          case BaseConstant.STATUS_FAIL:
      
              Stringerror = intent.getStringExtra(PROPERTIES_REPORT_ERROR);
      
              edtLog.append("上报属性失败!失败原因:" + error + "\n");
      
              break;
      }


     取消注册下行监听器

    1. 参数对比

      阿里云 unRegisterOnPushListener

      华为云 unregisterReceiver

      参数

      描述

      参数

      描述

      IConnectNotifyListener

      回调类的对象

      BroadcastReceiver

      回调类的对象

    2. 华为云使用示例
      // 取消注册属性上报监听器
      
      LocalBroadcastManager.getInstance(this).unregisterReceiver(propertyBroadcastReceiver);


    注销初始化

    1、 华为云使用示例

    // 设备注销初始化 device为上面init初始化的对象
    
    device.init();


    发布

    1. 参数对比

      阿里云 publish

      华为云 publishRawMessage

      参数

      描述

      参数

      描述

      isRPC

      是否为RPC请求,如果是,则需要等待 replyTopic消息后才Rsp。默认为false,表示不需应答。


      topic

      拥有发布权限的Topic。

      topic

      拥有发布权限的Topic。

      payloadObj

      需要发布的数据。

      message

      需要发布的数据。

      qos

      设置MQTT请求中QOS的值。

      qos

      设置MQTT请求中QOS的值。

      listener

      监听器

      listener

      监听器


    2. 华为云使用示例

      下面示例为消息发布示例:

      方法一:用reportDeviceMessage发布消息。

      //创建消息
      
      DeviceMessage deviceMessage = newDeviceMessage();
      
      deviceMessage.setContent("hello123123123123");
      
      deviceMessage.setId("123");
      
      deviceMessage.setName("data123");
      
      //上报消息
      
      device.getClient().reportDeviceMessage(deviceMessage);
      
      //注册广播IotDeviceIntent.ACTION_IOT_DEVICE_SYS_MESSAGES_UP,用于处理消息上报的结果
      
      LocalBroadcastManager.getInstance(this).registerReceiver(messageBroadcastReceiver,newIntentFilter(IotDeviceIntent.ACTION_IOT_DEVICE_SYS_MESSAGES_UP));
      
      intbroadcastStatus = intent.getIntExtra(BaseConstant.BROADCAST_STATUS, BaseConstant.STATUS_FAIL);
      
      switch (broadcastStatus){
      
          case BaseConstant.STATUS_SUCCESS:
      
              edtLog.append("消息上报成功!" + "\n");
      
              break;
      
          case BaseConstant.STATUS_FAIL:
      
              Stringerror = intent.getStringExtra(BaseConstant.COMMON_ERROR);
      
              edtLog.append("消息上报失败!失败原因:" + error + "\n");
      
              break;
      }
      方法二:用publishRawMessage发布消息。
      // 设置设备消息报告的侦听器
      private ActionListener messagesActionListener = newActionListener() {
      
          @Override
          publicvoidonSuccess(Objectcontext) {
              Intent intent = newIntent(IotDeviceIntent.ACTION_IOT_DEVICE_SYS_MESSAGES_UP);
              intent.putExtra(BaseConstant.BROADCAST_STATUS, BaseConstant.STATUS_SUCCESS);
              localBroadcastManager.sendBroadcast(intent);
          }
      
          @Override
          publicvoidonFailure(Objectcontext, Throwablevar2) {
              Intent intent = newIntent(IotDeviceIntent.ACTION_IOT_DEVICE_SYS_MESSAGES_UP);
              intent.putExtra(BaseConstant.BROADCAST_STATUS, BaseConstant.STATUS_FAIL);
              intent.putExtra(BaseConstant.COMMON_ERROR, var2.getMessage());
              localBroadcastManager.sendBroadcast(intent);
          }
      };
      
      //创建消息
      String deviceMessage = "{ \"name\": \"data123\", \"id\": \"123\", \"content\": \"hello123123123123\" }";
      
      //设置topic
      String topic = "$oc/devices/" + deviceId + "/sys/messages/up";
      
      //设置qos
      int qos = 1;
      
      //发布消息
      device.getDevice().getClient().publishRawMessage(new RawMessage(topic, deviceMessage, qos), messagesActionListener);
    3. 说明:

      1. 方法一中的reportDeviceMessage是publishRawMessage的上层,只用以topic = "$oc/devices/" + deviceId + "/sys/messages/up"; 的消息传输中。

      2. 在SDK中,各非自定义topic都有各自的接口,可以在 com.huaweicloud.sdk.iot.device.client.requests.DeviceClient 中查看。


    订阅

    1. 参数对比

      在华为云中云平台默认注册Topic,在平台注册的Topic,不需要订阅就可以直接调用。

      阿里云 subscribe

      华为云 Connection类中的 subscribeTopic

      参数

      描述

      参数

      描述

      topic

      订阅的Topic

      topic

      要订阅的自定义主题

      SubscribeListener

      侦听器

      actionListener

      侦听器

      qos

      设置MQTT请求QOS值。

      qos

      设置MQTT请求中QOS值。

      isSubscribe

      是否订阅,布尔值



    取消订阅

        可在华为云平台页面直接取消订阅,或使用unsubscribeTopic取消订阅。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。