鸿蒙HarmonyOS SDK
设备发现
局域网发现

局域网发现

局域网发现由 GizLanManager 通过 UDP 广播实现。调用前应初始化核心与 LAN 模块,并确保手机和设备处于允许广播通信的同一局域网。

监听发现结果

import { GizDevice } from '@gizwits/smart-sdk';
import { GizLanManager } from '@gizwits/smart-sdk-lan';
 
let lanDevices: Array<GizDevice> = [];
const unsubscribeLan = GizLanManager.subscribeLanDeviceList().subscribe(
  (devices: Array<GizDevice>): void => {
    lanDevices = devices;
  }
);

开始发现

await GizLanManager.startDiscovery();

该方法创建 UDP Socket、发送发现广播并周期刷新。

立即刷新

await GizLanManager.refreshDiscovery();

发现已经运行时立即再发送一次广播;尚未启动时会启动发现。

查询发现状态

const discovering: boolean = GizLanManager.isDiscovering();

停止发现

await GizLanManager.stopDiscovery();
unsubscribeLan();

停止后 SDK 会关闭 Socket,并将当前 LAN 设备标记为离线。

读取发现资料与底层会话

const profile = GizLanManager.getProfile(device.id);
const session = GizLanManager.getSession(device.id);

普通业务应通过 device.lanCapability 通信,不应直接维护 GizLanDeviceSession

发现不到设备时检查当前 Wi-Fi、GET_WIFI_INFO 权限、AP 隔离、访客网络限制和路由器广播策略。