日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

基于MQTT Topic通信

Android SDK提供與阿里云物聯網平臺通信的基礎能力接口,本文介紹通過自定義Topic實現發布、訂閱、取消訂閱的基礎能力。

具體代碼實現請參見Demo中的MqttActivity.java。

發布消息

更多發布消息內容,請參見MqttPublishRequest

  • 不返回應答

    適用于設備上行消息,物聯網平臺不回復,或者物聯網平臺進行了回復但設備端不需要做處理的場景。

    // 發布
    MqttPublishRequest request = new MqttPublishRequest();
    // 設置是否需要應答。
    request.isRPC = false;
    // 設置topic,設備通過該Topic向物聯網平臺發送消息。以下Topic為示例,需替換為用戶自己設備的Topic。
    request.topic = "/a18wP******/LightSwitch/user/update";
    // 設置qos
    request.qos = 0;
    String data = "hello world"; //TODO:data 設置需要發布的數據
    request.payloadObj = data;
    LinkKit.getInstance().publish(request, new IConnectSendListener() {
        @Override
        public void onResponse(ARequest aRequest, AResponse aResponse) {
            // 消息成功提交給操作系統的發送緩沖區。
            // 在網絡波動等異常情況下,消息可能無法到達云端。
            // 如果上行的消息有對應的下行的reply, 建議通過reply報文來確認上行消息的到達。
        }
        @Override
        public void onFailure(ARequest aRequest, AError aError) {
            // 發布失敗
        }
    });                       

    參數

    示例

    說明

    isRPC

    false

    是否為RPC請求,如果是,則需要等待 replyTopic消息后才Rsp。

    默認為false,表示不需應答。

    topic

    /a18wP******/LightSwitch/user/update

    擁有發布權限的Topic。設備通過該Topic向物聯網平臺發送消息。

    qos

    0

    設置MQTT請求中QOS的值,默認為0。

    payloadObj

    {"id":"160865432","method":"thing.event.property.post","params":{"LightSwitch":1},"version":"1.0"}

    需要發布的數據,可以為任意格式數據。如果格式為JSON String,其中id字段需要保持每次唯一,不可重復,請使用自增的方式進行設置ID字段。示例中id字段為160865432,則下次id字段應為160865433。

  • 返回應答

    • 適用于用戶將設備上行的消息流轉到自己的業務服務器,業務服務器再發送下行消息給設備的場景。

    • 適用于用戶使用Alink協議的Topic,并且協議規定服務端會回復reply報文的場景。

    // 發布
    MqttPublishRequest request = new MqttPublishRequest();
    // 設置是否需要應答。設置為true,表示期望收到物聯網平臺的下行回復。
    request.isRPC = true;
    // 設置qos
    request.qos = 0;
    // 設置topic,設備通過該Topic向物聯網平臺發送消息。以下Topic為示例,需替換為用戶自己設備的Topic。
    request.topic = "/a18wP******/LightSwitch/user/update";
    //設置物聯網平臺答復的topic,若不設置,則默認為 topic+“_reply”。
    request.replyTopic = "/a18wP******/LightSwitch/user/update_reply";
    String data = "hello world"; //TODO:data 設置需要發
    request.payloadObj = data;
    //demo的BaseTemplateActivity提供了參考的消息響應的類, 下行消息會在其中的onResponse中給到用戶
    LinkKit.getInstance().publish(request, new IConnectSendListener() {
        @Override
        public void onResponse(ARequest aRequest, AResponse aResponse) {
            // 發布成功
        }
        @Override
        public void onFailure(ARequest aRequest, AError aError) {
            // 發布失敗
        }  
    });                    

    參數

    示例

    說明

    isRPC

    true

    是否為RPC請求,如果是,則需要等待 replyTopic消息后才Rsp。

    設置為true,表示期望收到物聯網平臺的下行回復。

    qos

    0

    設置MQTT請求中QoS的值,默認為0。

    topic

    /a18wP******/LightSwitch/user/update

    擁有發布權限的Topic。設備通過該Topic向物聯網平臺發送消息。

    replyTopic

    /a18wP******/LightSwitch/user/update_reply

    設置物聯網平臺答復的topic,若不設置,則默認為 topic+“_reply”。

    payloadObj

    {"id":"160865432","method":"thing.event.property.post","params":{"LightSwitch":1},"version":"1.0"}

    需要發布的數據,格式必須為JSON String,其中id字段需要保持每次唯一,不可重復,請使用自增的方式進行設置ID字段。示例中id字段為160865432,則下次id字段應為160865433。

說明

設備發送消息的回調onResponse/onFailure,默認是在UI線程透出。自lp-iot-linkkit的1.7.3版本起,您可以通過PersistentConnect.mNotifySendResultOnMainThread = false;選擇將消息通過非UI線程透出。對于UI線程業務繁忙的場景,建議將該配置項設置為false

訂閱消息

您可以訂閱指定Topic的消息,訂閱關系將保存在物聯網平臺。物聯網平臺收到指定Topic發布的消息后,會將消息轉發給設備。更多內容,請參見MqttSubscribeRequest

訂閱成功后,相應的下行消息,會通過認證與連接連接狀態與下行消息監聽中的IConnectNotifyListener對象中透出。

示例代碼:

// 訂閱
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) {
        // 訂閱失敗
    }
});                      

如果設備不再需要訂閱指定Topic,需要主動取消訂閱。否則訂閱關系一直存在,您將持續收到訂閱Topic發送的消息。具體內容,請參見下文取消訂閱

取消訂閱

// 取消訂閱
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) {
        // 取消訂閱失敗
    }
});