事件监听
SDK 使用 GizState<T> 暴露登录、设备、通信状态和数据点事件。subscribe() 默认立即回调当前值,并返回取消订阅函数。
用户状态
const unsubscribeUser = userManager.subscribeUserState().subscribe((state): void => {
// 将登录状态和用户资料同步到 ArkUI。
});绑定设备列表
const unsubscribeBound = userManager.subscribeBoundDeviceList().subscribe((profiles): void => {
// 云端绑定设备发生变化。
});数据点事件
import { GizDataPointEvent } from '@gizwits/smart-sdk';
import { hilog } from '@kit.PerformanceAnalysisKit';
const unsubscribeData = device.subscribeDataPointEvents().subscribe(
(event: GizDataPointEvent | undefined): void => {
if (event !== undefined) {
hilog.info(0x0000, 'GizwitsSample', 'Data source: %{public}s', String(event.source));
}
}
);subscribeDataPoints() 只提供合并后的当前值;subscribeDataPointEvents() 还包含本次事件的来源、告警和故障。通过 event.source 可区分 BLE、LAN 和 MQTT 上报。
通信状态
const unsubscribeStatus = device.bleCapability.subscribeStatus().subscribe((status): void => {
// 在 ONLINE_CONTROLLABLE 后允许控制。
});MQTT 绑定事件
const unsubscribeMqttBinding = GizMqttManager.subscribeBindingEvents().subscribe((event): void => {
if (event !== undefined) {
// event.deviceId / event.isBound
}
});subscribeBindEvent() 是同一个状态流的兼容命名。
GizState.getValue 与 subscribe
const currentStatus = device.bleCapability.subscribeStatus().getValue();
const unsubscribe = device.subscribeBoundState().subscribe((isBound: boolean): void => {
// 订阅时默认立即获得当前值。
});在 ArkUI 组件的 aboutToDisappear() 或 Ability 销毁时调用所有取消函数。调用方不要使用 setValue() 修改 SDK 内部状态。