华为Android SDK接口与阿里云对比
场景说明
在开发中遇到Android SDK迁移,对Link进行阿里云与华为云SDK中接口对比对比。以下对比以Android版本为例。
Aiot Android与 device_SDK_Android 版本接口对比
下表为设备端主要接口对比:
华为云device_SDK_Android 在 这里 可以获取。
调用阿里云接口清单
切换华为云接口清单
与IoT平台建立连接
init
与IoT平台建立连接
init
注册下行数据监听器
registerOnPushListener
注册下行数据监听器
registerReceiver
取消注册下行监听器
unRegisterOnPushListener
取消注册下行监听器
unregisterReceiver
注销初始化
deinit
注销初始化
close
发布
publish
发布
publishRawMessage
订阅
subscribe
订阅
subscribeTopic
取消订阅
unsubscribe
取消订阅
unsubscribeTopic
下面对主要接口清单进行逐条参数对比,以及其使用示列。
参数对比与示列
建立连接
参数对比。下表为建立连接的主要参数对比:
阿里云 init
华为云 init
参数
描述
参数
描述
context
获取上下文
mContext
获取上下文
mqttHost
设备访问地址\域名
serverUri
设备访问地址\域名
productKey
物联网平台为产品颁发的标识符
deviceId
设备ID
deviceName
设备在产品内的标识符
deviceSecret
设备密钥
deviceSecret
设备密钥
- 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();
注册下行数据监听器
参数对比
阿里云 registerOnPushListener
华为云 registerReceiver
参数
描述
参数
描述
IConnectNotifyListener
回调类的对象
BroadcastReceiver
回调类的对象
IotDeviceIntent
消息广播类型 参数类型在 IotDeviceIntent.java文件中
华为云使用示例
示例为注册属性上报的数据监听器
// 注册属性上报的数据监听器 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; }
取消注册下行监听器
参数对比
阿里云 unRegisterOnPushListener
华为云 unregisterReceiver
参数
描述
参数
描述
IConnectNotifyListener
回调类的对象
BroadcastReceiver
回调类的对象
- 华为云使用示例
// 取消注册属性上报监听器 LocalBroadcastManager.getInstance(this).unregisterReceiver(propertyBroadcastReceiver);
注销初始化
1、 华为云使用示例
// 设备注销初始化 device为上面init初始化的对象 device.init();
发布
参数对比
阿里云 publish
华为云 publishRawMessage
参数
描述
参数
描述
isRPC
是否为RPC请求,如果是,则需要等待 replyTopic消息后才Rsp。默认为false,表示不需应答。
无
topic
拥有发布权限的Topic。
topic
拥有发布权限的Topic。
payloadObj
需要发布的数据。
message
需要发布的数据。
qos
设置MQTT请求中QOS的值。
qos
设置MQTT请求中QOS的值。
listener
监听器
listener
监听器
- 华为云使用示例
下面示例为消息发布示例:
方法一:用reportDeviceMessage发布消息。
方法二:用publishRawMessage发布消息。//创建消息 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; }
// 设置设备消息报告的侦听器 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);
- 说明:
1. 方法一中的reportDeviceMessage是publishRawMessage的上层,只用以topic = "$oc/devices/" + deviceId + "/sys/messages/up"; 的消息传输中。
2. 在SDK中,各非自定义topic都有各自的接口,可以在 com.huaweicloud.sdk.iot.device.client.requests.DeviceClient 中查看。
订阅
参数对比
在华为云中云平台默认注册Topic,在平台注册的Topic,不需要订阅就可以直接调用。阿里云 subscribe
华为云 Connection类中的 subscribeTopic
参数
描述
参数
描述
topic
订阅的Topic
topic
要订阅的自定义主题
SubscribeListener
侦听器
actionListener
侦听器
qos
设置MQTT请求QOS值。
qos
设置MQTT请求中QOS值。
isSubscribe
是否订阅,布尔值
取消订阅
可在华为云平台页面直接取消订阅,或使用unsubscribeTopic取消订阅。
- 点赞
- 收藏
- 关注作者
评论(0)