配网 SDK

更新时间:2018-05-30 19:40:57

概述

提供了把 WiFi 设备配置上家庭路由器以及局域网内已联网设备的发现能力,具体方案包括一键广播配网、手机热点配网、智能路由器配网以及设备间相互配网等。

依赖SDK 概述
日志 基础依赖SDK,提供客户端统一日志打印,日志等级控制,分模块日志隔离等能力
API 通道 提供API通道能力,和基础环境配置信息

集成方式

如何集成 SDK,查看这里>

初始化

配网SDK 的初始化依赖 API 通道的初始化,请参见:API 通道 - 初始化

使用说明

设备发现

提供获取局域网待配网设备、零配、路由器发现待添加设备发现功能。

启动发现设备

发现本地的待配网设备、或者零配、路由器发现设备

// 引入头文件
#import <IMSDeviceCenter/IMLDeviceCenter.h>

[[IMLLocalDeviceMgr sharedMgr] startDiscovery:^(NSArray *devices, NSError *err) {
        if (devices && [devices count] > 0) {
            IMSLifeLogVerbose(@"发现本地设备: %@", devices);
            // 将与用户没有绑定关系的设备显示在本地发现设备中
            for (IMLCandDeviceModel *device in devices) {
                if (![self checkBindWithLocalDevice:device]) {
                    [wSelf.localDeviceList addObject:device];
                }
            }
            [wSelf.tableView reloadData];
        } else if (err) {
            IMSLifeLogError(@"本地发现设备出错: %@", err);
        }
    }];

获取所有已发现设备

// 引入头文件
#import <IMSDeviceCenter/IMLDeviceCenter.h>

NSArray *allLanDevicesArray = [kLKLocalDeviceMgr getLanDevices];

终止发现设备

停止发现本地已配和线上待配设备,调用该接口会清除已发现设备列表,确保和startDiscovery成对调用。

// 引入头文件
#import <IMSDeviceCenter/IMLDeviceCenter.h>

[kLKLocalDeviceMgr stopDiscovery];

通用配网流程

设置待添加设备信息

// 引入头文件
#import <IMSDeviceCenter/IMLDeviceCenter.h>

IMLCandDeviceModel *model = self.localDeviceList[index];
[kLkAddDevBiz setDevice:model];

备注:其中(IMLCandDeviceModel *)model 为本地发现待配设备或者云端拉取产品列表组装的model
本地发现设备参见:本文下面 设备发现 章节内容

其中 IMLCandDeviceModel 属性说明:

属性 类型 是否必选 描述 备注
productKey NSString 设备productKey
deviceName NSString 设备名称
regProductKey NSString 发现待配网设备的设备的productKey 零配和路由器配网必选
regDeviceName NSString 发现待配网设备的设备的DeviceName 零配和路由器配网必选
addDeviceFrom NSString 云端返回待配网设备来源:“ROUTER”--代表路由器发现,“ZERO_DEVICE”代表零配发现
devType NSString 设备联网类型:0代表wifi设备;1代表ethernet设备(网线连接):2代表路由器
linkType assign 指定配网方式
token NSString 设备配网完成后得到的token,用于下一步绑定用
productEncryptKey NSString 产品加密密钥

设置配网模式

// 引入头文件
#import <IMSDeviceCenter/IMLDeviceCenter.h>

[kLkAddDevBiz setAliProvisionMode:ForceAliLinkTypeHotspot];

开始设备配网

上述设置好待添加设备信息,进入配网

// 引入头文件
#import <IMSDeviceCenter/IMLDeviceCenter.h>

[kLkAddDevBiz startAddDevice:self];

其中 self 为配网过程中 notifier 监听回调对象(代理)

- (void)notifyPrecheck:(BOOL)success withError:(NSError *)err
{
    NSLog(@"notifyPrecheck callback err : %@", err);
    dispatch_async(dispatch_get_main_queue(), ^{
        [self.addVC notifyProgress:LKAddStatePrechecking result:nil withError:err];
    });
}

- (void)notifyProvisionPrepare:(LKPUserGuideCode)guideCode
{
    NSLog(@"notifyProvisionPrepare callback guide code : %ld", guideCode);
}

-(void)notifyProvisioning 
{
    NSLog(@"notifyProvisioning callback(正在进行配网...) ");
}

- (void)notifyProvisionStatus:(LKProvisonStatus)provisionStatus boolSuccess:(BOOL)boolSuccess;
{
    NSLog(@"notifyProvisionStatus callback provisionStatus:%d boolSuccess:%d", provisionStatus, boolSuccess);
}

- (void)notifyProvisionResult:(IMLCandDeviceModel *)candDeviceModel withProvisionError:(NSError *)provisionError
{
    NSLog(@"配网成功:%@",candDeviceModel);
}

输入配网 wifi 名称以及密码信息

在收到 notifyProvisionPrepare 回调后,引导用户输入 ssid 和密码后,调用此方法传入 WiFi 的 ssid 及 password 信息。 注:广播配网才会有 notifyProvisionPrepare 回调。

// 引入头文件
#import <IMSDeviceCenter/IMLDeviceCenter.h>

- (void)notifyProvisionPrepare:(LKPUserGuideCode)guideCode
{
    NSLog(@"notifyProvisionPrepare callback guide code : %ld", guideCode);
    [self inputSsidAndPassword];
}

- (void)inputSsidAndPassword
{
    NSSstring *ssid = @"example ssid";
    NSString *password = @"1qaz@WSX";
    NSInterger timeout = 60;(单位秒,s);
    [kLkAddDevBiz toggleProvision:ssid pwd:password timeout:timeout];
}

获取当前配网进度

// 引入头文件
#import <IMSDeviceCenter/IMLDeviceCenter.h>

LKAddState state = [kLkAddDevBiz getProcedureState];

停止配网

// 引入头文件
#import <IMSDeviceCenter/IMLDeviceCenter.h>

[kLkAddDevBiz stopAddDevice];

手机热点配网

提供手机热点配网支持的相关API。
手机热点配网是一键配网的 backup 方案,热点配网模式可以手机端手动开启热点,当设备连上热点的时候方可进行热点配网流程。

是否支持起热点

// 引入头文件
#import <IMSDeviceCenter/IMLDeviceCenter.h>

BOOL isSupportedHotspot = [IMLHotspotHelper isSupportedHotspot];

发现连接到热点的设备

// 引入头文件
#import <IMSDeviceCenter/IMLDeviceCenter.h>

[kLKHotspotHelper discoverAccessibleItems:^(NSArray<LKHotAccessibleItem *> *devices, NSError *error) {
        self.accessibleDevices = devices;
        [_hotspotTableView reloadData];
}];

停止发现连接到热点的设备

// 引入头文件
#import <IMSDeviceCenter/IMLDeviceCenter.h>

[kLKHotspotHelper stopDiscover];

设备切换 WiFi

指定需要将设备配入网络的 wifi 信息

// 引入头文件
#import <IMSDeviceCenter/IMLDeviceCenter.h>

LKHotAccessibleItem *accessible = self.accessibleDevices[index];
[kLKHotspotHelper switchToAccessPoint:accessible ssid:ssid password:pwd completion:^(id result, NSError *error) {
    AXZLogInfo(@"switchToAccessPointResult:%@--%@:error", result, error);
}];

注:accessible 为上面 发现连接到热点的设备 章节的设备模型

设备绑定

当完成设备配网之后,后续需要将设备与用户或者与家庭做一个关联绑定,在绑定的时候需要调用 SDK 的获取 token方法,取得设备token,然后进行设备绑定。获取token:

// 引入头文件
#import <IMSDeviceCenter/IMLDeviceCenter.h>

// self.productKey 和 self.deviceName 是配网成功后返回的设备模型中的 productKey 和 deviceName
[[IMLLocalDeviceMgr sharedMgr] getDeviceToken:self.productKey deviceName:self.deviceName timeout:20 resultBlock:^(NSString *token, BOOL boolSuccess) {
    NSLog(@"主动获取设备token:%@,boolSuccess:%d", token, boolSuccess);
    if(token){
    // 调用绑定接口进行设备绑定
    } else{
        NSLog(@"获取token失败(超时)");
    }
}];

使用配网插件

配网插件基于Bone容器实现了完整的配网逻辑,因此在接入Bone容器的前提下,可以直接打开配网插件来完成配网逻辑,然后再自行处理配网之后的逻辑;

目前配网插件Id为:
插件Id 国内版:a123kfz2KdRdrfYc</span>
插件Id 国际版:a223c2beCJQ2Xpk2</span>

插件Id的具体使用方式,参考见Bone容器部分。也可以参考下面文档对应的</span>调用平台提供的配网插件部分,//yzqy0q.html#8vpydz](//yzqy0q.html#8vpydz)

Screen Shot 2018-05-22 at 10.11.48.png | left | 747x437

results matching ""

    No results matching ""