更新时间:2024-06-05 02:04:52下载pdf
通过摄像头设备扫描 App 二维码来传递配网信息的方式来实现配网设备。
类和协议
类名(协议名) | 说明 |
---|---|
ThingSmartActivator | 设备配网相关功能封装 |
ThingSmartActivatorDelegate | 设备配网结果回调代理 |
接口说明
配网 Token 获取接口
- (void)getTokenWithHomeId:(long long)homeId
success:(ThingSuccessString)success
failure:(ThingFailureError)failure;
参数说明
参数 | 说明 |
---|---|
homeId | 设备将要绑定的家庭的 ID |
success | 成功回调,返回此次配网用的 Token |
failure | 失败回调,error 表示失败原因 |
接口说明
开始配网接口
- (void)startConfigWiFi:(ThingActivatorMode)mode
ssid:(NSString *)ssid
password:(NSString *)password
token:(NSString *)token
timeout:(NSTimeInterval)timeout;
参数说明
参数 | 说明 |
---|---|
mode | 配网模式 |
ssid | 期望设备连接的 Wi-Fi 的 SSID |
password | 期望设备连接的 Wi-Fi 的密码 |
token | 配网 Token |
timeout | 超时时间 |
接口说明
停止配网接口
- (void)stopConfigWiFi;
接口说明
配网结果代理回调
- (void)activator:(ThingSmartActivator *)activator didReceiveDevice:(ThingSmartDeviceModel *)deviceModel error:(NSError *)error;
参数说明
参数 | 说明 |
---|---|
activator | 此次配网使用的 ThingSmartActivator 对象 |
deviceModel | 配网成功时,返回此次配网的设备模型,失败时返回 nil |
error | 配网失败时,标示错误信息,成功时为 nil |
开始配网之前,SDK 需要在联网状态下从云端获取配网 Token,然后将 Wi-Fi 的 SSID 与密码一起生成二维码。Token 的有效期为 10 分钟,且配置成功后就会失效(再次配网需要重新获取)。
设备配网需要依赖于家庭,设备必须绑定在某个家庭下,所以获取配网 Token 时,需要传入一个家庭的 ID 作为参数,设备使用该 Token 激活成功后,就会绑定在该家庭的设备列表中。
Objective-C
- (void)getToken {
[[ThingSmartActivator sharedInstance] getTokenWithHomeId:homeId success:^(NSString *token) {
NSLog(@"getToken success: %@", token);
// TODO: startConfigWiFi
} failure:^(NSError *error) {
NSLog(@"getToken failure: %@", error.localizedDescription);
}];
}
Swift
func getToken() {
ThingSmartActivator.sharedInstance()?.getTokenWithHomeId(homeId, success: { (token) in
print("getToken success: \(token)")
// TODO: startConfigWiFi
}, failure: { (error) in
if let e = error {
print("getToken failure: \(e)")
}
})
}
获取到配网 Token 后,还需要有期望设备连接的 Wi-Fi 的 SSID 和密码,通过下面的方式拼接成字符串,然后根据该字符串生成一个二维码图片。
Objective-C
NSDictionary *dictionary = @{
@"s": self.ssid,
@"p": self.pwd,
@"t": self.token
};
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:0 error:nil];
self.wifiJsonStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
Swift
let dictionary = [
"s": self.ssid,
"p": self.pwd,
"t": self.token
]
let jsonData = JSONSerialization.data(withJSONObject: dictionary, options: JSONSerialization.WritingOptions.Element)
self.wifiJsonStr = String(data: jsonData, encoding: String.Encoding.utf8)
使用上面生成的 wifiJsonStr
生成二维码,确定设备处于配网状态,将二维码对准摄像头,设备捕捉到二维码信息后会发出提示音。此时,通过以下接口开始监听配网结果。
Objective-C
[[ThingSmartActivator sharedInstance] startConfigWiFi:ThingActivatorModeQRCode ssid:self.ssid password:self.pwd token:self.token timeout:100];
Swift
ThingSmartActivator.sharedInstance()?.startConfigWiFi(ThingActivatorModeQRCode, ssid: self.ssid, password: self.pwd, token: self.token, timeout: 100)
配网过程中,可使用下面的方法停止配网。
Objective-C
[[ThingSmartActivator sharedInstance] stopConfigWiFi];
Swift
ThingSmartActivator.sharedInstance()?.stopConfigWiFi()
配网结果通过代理 ThingSmartActivatorDelegate
回调,代理方法如下:
Objective-C
// deviceModel 则为配网成功的设备的信息
- (void)activator:(ThingSmartActivator *)activator didReceiveDevice:(ThingSmartDeviceModel *)deviceModel error:(NSError *)error;
Swift
func activator(_ activator: ThingSmartActivator!, didReceiveDevice deviceModel: ThingSmartDeviceModel!, error: Error!)
涂鸦智能设备支持强、中、弱三种绑定模式,设备成功激活到对应账号的家庭中后,不同的绑定模式,解除绑定需要不同的校验方式。
由于 IPC 有音视频传输,涉及到较多隐私,默认是强绑定模式,且不可以切换成其他模式。如果接入方有强烈需求,且评估过修改成其他模式的影响,可向涂鸦开发者平台提交工单处理。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈