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

廣播通信

云端可以對批量設備發送廣播下行通知,設備端可以按照如下方式對廣播進行處理。目前云端支持單設備廣播和批量廣播,這兩種下發的topic格式是不一樣的,設備端需要根據需要支持的形式做響應。

批量廣播

批量廣播是系統廣播,無需端上進行訂閱即可收到。topic格式:/sys/${pk}/${dn}/broadcast/request/+。

定向廣播

定向廣播是需要端上進行訂閱才能收到廣播下行的。topic格式:/broadcast/${pk}/${自定義action}。

廣播接收

本功能需要在SDK正常初始化,且注冊了下行監聽器才可以收到通知。需要注意定向廣播需要設備端進行訂閱,topic是由發送端定義的,須符合 /broadcast/${pk}/${自定義action} 格式。其中自定義action可以是符合格式的任意值,設備端根據發送端的定義來進行訂閱。

// 注冊下行監聽器
LinkKit.getInstance().registerOnPushListener(notifyListener);
/**
 * 下行監聽器,云端 MQTT 下行數據都會通過這里回調
 */
private static IConnectNotifyListener notifyListener = new IConnectNotifyListener() {
    /**
         * onNotify 會觸發的前提是 shouldHandle 沒有指定不處理這個topic
         * @param connectId 連接類型,這里判斷是否長鏈 connectId == ConnectSDK.getInstance().getPersistentConnectId()
         * @param topic 下行的topic
         * @param aMessage 下行的數據內容
         */
    @Override
    public void onNotify(String connectId, String topic, AMessage aMessage) {
        String data = new String((byte[]) aMessage.data);
        // 服務端返回數據示例  data = {"method":"thing.service.test_service","id":"12*****67","params":{"vv":60},"version":"1.0.0"}
        ALog.d(TAG, "onNotify() called with: connectId = [" + connectId + "], topic = [" + topic + "], aMessage = [" + data + "]");
        if (ConnectSDK.getInstance().getPersistentConnectId().equals(connectId) && !TextUtils.isEmpty(topic) &&
                   topic.startsWith("/sys/" + DemoApplication.productKey + "/" + DemoApplication.deviceName + "/broadcast/request/")) {
            /**
                 * topic 格式:/sys/${pk}/${dn}/broadcast/request/+
                 * 無需訂閱,云端免訂閱,默認無需業務進行ack,但是也支持用戶云端和設備端約定業務ack
                 * 示例:/sys/a14*****ZA/android_lp_test1/broadcast/request/1229336863924294656
                 * 注意:觸發端數據需要進行Base64編碼,否則會出現端上亂碼,
                 * 如云端: org.apache.commons.codec.binary.Base64.encodeBase64String("broadcastContent".getBytes())
                 */
            //
            ToastUtils.showToast("收到云端批量廣播下行:topic=" + topic + ",data=" + data);
            //TODO 根據批量廣播做業務邏輯處理
        } else if (ConnectSDK.getInstance().getPersistentConnectId().equals(connectId) && !TextUtils.isEmpty(topic) &&
                   topic.startsWith("/broadcast/" + DemoApplication.productKey )) {
            //
            /**
                 * topic 需要用戶自己訂閱才能收到,topic 格式:/broadcast/${pk}/${自定義action},需要和云端發送topic一致
                 * 示例:/broadcast/a14*****ZA/oldBroadcast
                 * 注意:觸發端數據需要進行Base64編碼,否則會出現端上亂碼,
                 * 如云端: org.apache.commons.codec.binary.Base64.encodeBase64String("broadcastContent".getBytes())
                 */
            ToastUtils.showToast("收到云端廣播下行:topic=" + topic + ",data=" + data);
            //TODO 根據廣播做業務邏輯處理
        } else {
            ToastUtils.showToast("收到云端下行:topic=" + topic + ",data=" + data);
            /**
                 * TODO
                 * 根據訂閱的具體 topic 做業務處理
                 */
        }
    /**
 * @param connectId 連接類型,這里判斷是否長鏈 connectId == ConnectSDK.getInstance().getPersistentConnectId()
 * @param topic 下行topic
 * @return 是否要處理這個topic,如果為true,則會回調到onNotify;如果為false,onNotify不會回調這個topic相關的數據。建議默認為true。
 */
@Override
public boolean shouldHandle(String connectId, String topic) {
    return true;
}
    }