鸿蒙HarmonyOS SDK
设备通信
通信状态

通信状态

每个 GizDevice 的 BLE、LAN 和 MQTT capability 都维护独立状态。只有达到 ONLINE_CONTROLLABLE 后才应发送控制或读取指令。

读取和监听状态

import { GizCapacityStatus } from '@gizwits/smart-sdk';
 
const currentStatus = device.bleCapability.getStatus();
const unsubscribeStatus = device.bleCapability.subscribeStatus().subscribe(
  (status: GizCapacityStatus): void => {
    const controllable = status === GizCapacityStatus.ONLINE_CONTROLLABLE;
    // 根据 controllable 更新 ArkUI 控件。
  }
);

OFFLINE 表示通道不可用;ONLINE 表示已发现或已连接但尚不可控;ONLINE_CONTROLLABLE 表示鉴权或登录完成。

MQTT 云端状态

MQTT 模块会根据登录态、绑定设备资料、网络连接与主题订阅自动更新状态:

const unsubscribeCloud = device.mqttCapability.subscribeStatus().subscribe((status): void => {
  // 云端通道状态发生变化。
});

GizState 使用约束

const current = device.lanCapability.subscribeStatus().getValue();
const unsubscribeBound = device.subscribeBoundState().subscribe((isBound: boolean): void => {
  // subscribe 默认立即回调当前值。
});

页面离开时调用所有取消函数。调用方只应读取和订阅 SDK 返回的 GizState,不要调用 setValue()clearSubscribers() 修改内部状态。