Android SDK 提供了与云端长链接的基础能力接口,用户可以直接使用这些接口完成自定义 Topic 相关的功能。提供的基础能力包括:发布、订阅、取消订阅。如果不想使用物模型,可以通过这部分接口实现与云端的交互。
发布消息
MqttPublishRequest 类路径参见 com.aliyun.alink.linksdk.cmp.connect.channel.MqttPublishRequest。
// 发布
MqttPublishRequest request = new MqttPublishRequest();
request.isRPC = false;
// topic 替换成用户自己需要发布的 topic
request.topic = topic;
// 设置 qos
request.qos = 0;
// data 替换成用户需要发布的数据 json String
//示例 属性上报 {"id":"160865432","method":"thing.event.property.post","params":{"LightSwitch":1},"version":"1.0"}
request.payloadObj = data;
LinkKit.getInstance().publish(request, new IConnectSendListener() {
@Override
public void onResponse(ARequest aRequest, AResponse aResponse) {
// 发布成功
}
@Override
public void onFailure(ARequest aRequest, AError aError) {
// 发布失败
}
});
订阅消息
订阅关系保存在云端,设备如果订阅了某个topic,如果未主动执行unsbscribe,订阅关系会一直在。即如果设备重启之后不再订阅这个topic,订阅关系还是在的,云端收到对应topic发布,还是会转发给设备。订阅的topic下推可以在 设置的全局 IConnectNotifyListener 的 onNotify 处理。MqttSubscribeRequest 类路径参见 com.aliyun.alink.linksdk.cmp.connect.channel.MqttSubscribeRequest。
// 订阅
MqttSubscribeRequest subscribeRequest = new MqttSubscribeRequest();
// subTopic 替换成用户自己需要订阅的 topic
subscribeRequest.topic = subTopic;
subscribeRequest.isSubscribe = true;
subscribeRequest.qos = 0; // 支持0或者1
LinkKit.getInstance().subscribe(subscribeRequest, new IConnectSubscribeListener() {
@Override
public void onSuccess() {
// 订阅成功
}
@Override
public void onFailure(AError aError) {
// 订阅失败
}
});
取消订阅
可以通过设置qos参数,指定订阅使用qos 0 或 1。
// 取消订阅
MqttSubscribeRequest unsubRequest = new MqttSubscribeRequest();
// unSubTopic 替换成用户自己需要取消订阅的 topic
unsubRequest.topic = unSubTopic;
unsubRequest.isSubscribe = false;
LinkKit.getInstance().unsubscribe(unsubRequest, new IConnectUnscribeListener() {
@Override
public void onSuccess() {
// 取消订阅成功
}
@Override
public void onFailure(AError aError) {
// 取消订阅失败
}
});
在文档使用中是否遇到以下问题
更多建议
匿名提交