快速开始
本页给出同时接入 sdk、sdk_bluetooth、sdk_lan 和 sdk_mqtt 的最小流程。
环境要求
- HarmonyOS 系统版本与 API Level 以各模块 OHPM 页面声明为准。
- 支持 Phone、Tablet 和 2in1 设备。
- 使用 BLE 前需打开蓝牙并取得蓝牙、位置相关授权。
- 使用 LAN 前手机与设备需处于允许广播通信的同一 Wi-Fi 局域网。
- 使用 MQTT 前需有可用网络和已登录用户。
安装全部依赖
ohpm install @gizwits/smart-sdk
ohpm install @gizwits/smart-sdk-bluetooth
ohpm install @gizwits/smart-sdk-lan
ohpm install @gizwits/smart-sdk-mqtt也可以在应用模块的 oh-package.json5 中声明。版本号请通过 OHPM 查看并替换:
{
'dependencies': {
'@gizwits/smart-sdk': 'x.x.x',
'@gizwits/smart-sdk-bluetooth': 'x.x.x-bluetooth',
'@gizwits/smart-sdk-lan': 'x.x.x-lan',
'@gizwits/smart-sdk-mqtt': 'x.x.x-mqtt',
},
}配置权限
在应用模块的 src/main/module.json5 中声明四个模块所需权限:
{
'module': {
'requestPermissions': [
{ 'name': 'ohos.permission.INTERNET' },
{ 'name': 'ohos.permission.GET_NETWORK_INFO' },
{ 'name': 'ohos.permission.GET_WIFI_INFO' },
{
'name': 'ohos.permission.ACCESS_BLUETOOTH',
'reason': '$string:permission_bluetooth_reason',
'usedScene': { 'abilities': ['EntryAbility'], 'when': 'inuse' },
},
{
'name': 'ohos.permission.APPROXIMATELY_LOCATION',
'reason': '$string:permission_location_reason',
'usedScene': { 'abilities': ['EntryAbility'], 'when': 'inuse' },
},
],
},
}BLE 扫描前还要使用 HarmonyOS 原生权限 API 动态申请用户授权:
import { abilityAccessCtrl, common, PermissionRequestResult, Permissions } from '@kit.AbilityKit';
async function requestBluetoothPermissions(context: common.UIAbilityContext): Promise<boolean> {
const permissions: Array<Permissions> = [
'ohos.permission.ACCESS_BLUETOOTH',
'ohos.permission.APPROXIMATELY_LOCATION',
];
const result: PermissionRequestResult = await abilityAccessCtrl
.createAtManager()
.requestPermissionsFromUser(context, permissions);
return result.authResults.length === permissions.length &&
result.authResults.every((status: number): boolean =>
status === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED);
}初始化四个模块
import { GizConfiguration, GizProductInfo, GizSDKManager, GizServerInfo } from '@gizwits/smart-sdk';
import { GizBluetoothManager } from '@gizwits/smart-sdk-bluetooth';
import { GizLanManager } from '@gizwits/smart-sdk-lan';
import { GizMqttManager } from '@gizwits/smart-sdk-mqtt';
const configuration = new GizConfiguration(
'your-app-id',
'your-app-secret',
[new GizProductInfo('your-product-key', 'your-product-secret')],
new GizServerInfo('api.gizwits.com')
);
GizSDKManager.initialize(configuration);
GizBluetoothManager.initialize();
GizLanManager.initialize();
GizMqttManager.initialize();⚠️
AppSecret、ProductSecret、用户令牌和 Wi-Fi 密码属于敏感信息,不要写入日志或公开仓库。
登录并发现设备
import { GizDevice, GizSDKManager } from '@gizwits/smart-sdk';
const userManager = GizSDKManager.getUserManager();
await userManager.loginByAnonymous();
const unsubscribeBle = GizBluetoothManager.subscribeBluetoothDeviceList().subscribe(
(devices: Array<GizDevice>): void => {
// 将设备列表同步到 ArkUI 状态。
}
);
GizBluetoothManager.startBleScan();
const unsubscribeLan = GizLanManager.subscribeLanDeviceList().subscribe(
(devices: Array<GizDevice>): void => {
// 将设备列表同步到 ArkUI 状态。
}
);
await GizLanManager.startDiscovery();MQTT 会监听登录态和绑定设备列表并自动建立云连接。使用页面离开时停止发现并取消订阅:
GizBluetoothManager.stopBleScan();
await GizLanManager.stopDiscovery();
unsubscribeBle();
unsubscribeLan();继续阅读
- 从侧边栏按实际功能展开文档,查看具体 API 的参数、返回值与 ArkTS 示例。
- 通过 API 列表 按模块快速查找接口。