蓝牙双模设备连云激活

更新时间:2024-09-09 08:50:41下载pdf

本文介绍蓝牙双模设备如何连云激活。

准备工作

  • SDK 版本 2.3.0-indy 开始支持。
  • 开启连云激活,需要确保设备当前处于蓝牙链路激活状态。也就是说,通过蓝牙,将连云激活的信息传输给设备。
  • 如果需要判断云端链路是否激活,可以通过 IDevice().meta?["wifiEnable"] 方法,查询设备是否已连接 Wi-Fi 网络。如果结果为 true,则表示云端链路已激活。
  • 蓝牙权限检测:每次扫描和连接前,都要进行检测,否则 App 无法正常使用蓝牙。
    • App 在使用蓝牙连接或者扫描操作前,需要检查 App 定位权限是否被允许。
    • 检查蓝牙状态是否已开启。

      该部分检查逻辑,智慧行业 App SDK 未提供 API,您可自行检测。

初始化 IActivator

参数说明

参数名 类型 是否必填 说明
mode ActivatorMode 配网模式

代码示例

self.pair = ActivatorService.shared.activator(.BLEWIFICloud)

初始化配网参数

从扫描监听结果中,获取相关参数。

参数说明

参数名 类型 是否必填 说明
devId String 设备 ID
ssid String Wi-Fi SSID
pwd String Wi-Fi 密码
timeout long 连云激活超时时间,单位:毫秒,默认值:120
let params = BLEWIFICloudActivatorParams(devId: deviceId, ssid: "", password: "")

注册 IActivatorListener 监听配网结果

参数说明

参数名 类型 是否必填 说明
deviceModel IActivatedDevice? 若操作成功,表示被激活的设备信息,否则为 nil
params ActivatorParams? 操作相关的参数信息

回调函数说明

函数名 参数 说明
onSuccess deviceModel: IActivatedDevice?, params: ActivatorParams? 操作成功回调函数,返回被激活的设备信息
onError error: Error, params: ActivatorParams? 操作失败回调函数,返回错误信息

代码示例

private func start() {
    pair.listener = self
}

extension TableViewController: IActivatorListener {
    func onSuccess(deviceModel: IActivatedDevice?, params: ActivatorParams?) {
        SVProgressHUD.dismiss()
    }

    func onError(error: Error, params: ActivatorParams?) {
        SVProgressHUD.dismiss()
        SVProgressHUD.showInfo(withStatus: error.localizedDescription)
    }
}

开始配网

该方法用于开始设备配网操作。

参数说明

参数名 类型 是否必填 说明
params ActivatorParams 配网操作相关的参数信息,见代码示例
deviceInfo ThingBLEAdvModel 设备信息
assetId String 资产 ID
pairToken String 配网 Token
ssid String Wi-Fi SSID
password String Wi-Fi 密码
onlyConnectBle Boolean 仅蓝牙连接激活,默认:false

代码示例

// 开始设备配网操作,pair 是在初始化过程中生成的
// self.pair = ActivatorService.shared.activator(.BLEWIFI)
self.pair.startPair(BLEWIFIActivatorParams(deviceInfo: devInfo, assetId: assetID, pairToken: self.pairingToken, ssid: self.ssid, password: self.password, onlyConnectBle: true))

开始连云激活

该方法用于开始设备连云激活操作。

代码示例

let iDevice = IndustryDevice(deviceId: device?.deviceId ?? "")
iDevice.connectBLE {
    // let params = BLEWIFICloudActivatorParams(devId: deviceId, ssid: "", password: "")
     self.pair.startPair(params)
} failure: {

}