鸿蒙HarmonyOS SDK
快速开始

快速开始

本页给出同时接入 sdksdk_bluetoothsdk_lansdk_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 列表 按模块快速查找接口。