设备配网 (iOS)

更新时间:2022-02-17 05:23:40下载pdf

设备配网 SDK 提供了把智能设备配置上路由器的能力,具体包括:

  • 快连模式
  • 热点模式
  • 有线设备配网
  • 子设备配网
  • 扫设备二维码配网
  • 蓝牙设备配网 (详细参考涂鸦蓝牙体系)

名词解释

名词 说明
Wi-Fi 设备 采用 Wi-Fi 模块连接路由器,和 App 以及云端进行数据交互的智能设备。
EZ 模式 又称快连模式,App 把配网数据包打包到 802.11 数据包的指定区域中,发送到周围环境;智能设备的 Wi-Fi 模块处于混杂模式下,监听捕获网络中的所有报文,按照约定的协议数据格式解析出 APP 发出配网信息包。
AP 模式 又称热点模式,手机作为 STA 连接智能设备的热点,双方建立一个 Socket 连接通过约定端口交互数据。
摄像头扫码配网 摄像头设备通过扫描 App 上的二维码获取配网数据信息
有线设备 通过有线网络连接路由器的设备,例如 Zigbee 有线网关、有线摄像头等
子设备 通过网关来跟 App 以及云端数据交互的设备,例如 Zigbee 子设备
Zigbee Zigbee 技术是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术。主要用于距离短、功耗低且传输速率不高的各种电子设备之间进行数据传输以及典型的有周期性数据、间歇性数据和低反应时间数据传输的应用。
Zigbee 网关 融合 Zigbee 网络中协调器和 Wi-Fi 功能的设备,负责 Zigbee 网络的组建及数据信息存储。
Zigbee 子设备 Zigbee 网络中的路由或者终端设备,负责数据转发或者终端控制响应。

使用须知

类名 说明 注意
TuyaSmartActivator(单例) 提供快连模式、热点模式、有线设备激活、子设备激活等配网能力 需要在主线程中调用该类

iOS 版本适配

iOS 14 适配

从 iOS 14 开始,在设备配网、局域网本地控制时会触发本地网络权限弹窗,在用户点击允许后,app才能够向本地局域网发送数据。如果用户点击了拒绝,将无法使用相关功能。目前苹果没有提供任何 API 对此权限进行判断,建议开发者在相关功能无法正常使用时提示、引导用户检查系统设置 - app设置,确认是否开启了本地网络权限。

iOS 13 适配

Wi-Fi 权限变化

从 iOS 13 开始,如果没有开启地理位置权限,[[TuyaSmartActivator sharedInstance] currentWifiSSID] 将获取不到正确的 SSID (在已开启 Wi-Fi 权限的前提下), 在此情况下,系统会默认返回 WLAN or Wi-Fi,以下是 Apple 的官方邮件说明:

  • As we announced at WWDC19, we’re making changes to further protect user privacy and prevent unauthorized location tracking. Starting with iOS 13, the CNCopyCurrentNetworkInfo API will no longer return valid Wi-Fi SSID and BSSID information. Instead, the information returned by default will be:
  • SSID: “Wi-Fi” or “WLAN” (“WLAN” will be returned for the China SKU)
  • BSSID: “00:00:00:00:00:00”
  1. 确认 App 已开启地理位置权限。
  2. 确认通过系统方法获取的 BSSID 为 00:00:00:00:00:00 则认为是系统的默认返回,该结果不可用,需要开发者另外处理,比如手动输入 Wi-Fi 名称。

蓝牙权限变化

如果您有使用 SDK 开发集成涂鸦蓝牙设备,那么一定要关注 iOS 13 新增的应用蓝牙权限
在 iOS 13 系统中,除了系统蓝牙权限外,每个 App 都会有自己的蓝牙权限。若 App 中使用到蓝牙,每个应用首次启动前都会询问 是否允许应用使用蓝牙权限

在 iOS 13 中,苹果将原来蓝牙申请权限用的 NSBluetoothPeripheralUsageDescription 字段,替换为 NSBluetoothAlwaysUsageDescription 字段。在 info.plist 中添加新字段。

设备配网 (iOS)

当用户选择不允许时,会影响蓝牙功能的使用。此时建议引导用户进行开启蓝牙权限(此时蓝牙中心的状态为 CBCentralManagerStateUnauthorized)。

设备配网 (iOS)

获取手机当前连接 SSID

获取方法接口

/// Get the SSID of the current Wi-Fi asynchronously.
/// @see TuyaSmartActivator::currentWifiSSID
/// @param success Called when the task finishes successfully. TYSuccessString will be returned.
/// @param failure Called when the task is interrupted by an error.
+ (void)getSSID:(TYSuccessString)success
        failure:(TYFailureError)failure;

示例代码

Objc:

    [TuyaSmartActivator getSSID:^(NSString *result) {

    } failure:^(NSError *error) {

    }];

Swift:

TuyaSmartActivator.getSSID { (_: String?) in

        } failure: { (Error) in

        }