iOS配网SDK
本SDK包含Aqara设备配网的逻辑部分和UI界面; SDK依赖 的iOS版本 不能低于15.1
编译器环境: XCode14.0 以上版本
语言:Object-C
集成SDK
1.环境搭建
配网SDK需要用到Homekit和Wi-Fi的权限功能,需要宿主工程添加以下Capability:
1. Homeikit
2. Wireless Accessory Configuration

2.权限配置
SDK需要向iOS申请以下系统权限:
1.
NSHomeKitUsageDescriptionHomekit的访问权限 2.NSCameraUsageDescription摄像机访问权限(扫描设备上的二维码进行配网) 3.NSLocalNetworkUsageDescription本地网络查找权限(局域网配网) 4.NSLocationWhenInUseUsageDescription使用地理位置权限(手机获取WiFi名称,iOS 13 需要确认App已开启地理位置权限。 iOS 14 需要确认App开启精确位置权限。 如果上述配置后仍然获取不到WiFi名称,则需要开发者另外处理,比如手动输入WiFi名称)
NSBluetoothAlwaysUsageDescription获取蓝牙权限 (蓝牙配网)NSBonjourServices使用mDNS服务发现绿米设备,设置服务名称"_aqara._tcp."
可以在宿主项目的info.plist文件中快捷添加如下配置:
<plist version="1.0">
<key>NSBonjourServices</key>
<array>
<string>_aqara._tcp.</string>
</array>
<key>NSCameraUsageDescription</key>
<string>允许本App使用相机去添加配件</string>
<key>NSHomeKitUsageDescription</key>
<string>允许本App控制支持HomeKit的设备</string>
<key>NSLocalNetworkUsageDescription</key>
<string>需要使用本地网络以发现局域网上的设备信息</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>需要您的位置信息提供更好的服务</string>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>允许本App使用蓝牙连接</string>
</dict>
</plist>
3.所需第三方pod依赖
SDK需要用到如下第三方框架:
pod 'Masonry'
pod 'TTTAttributedLabel'
pod 'ZBarSDK', '~>1.3.1'
pod 'SDWebImage', '5.3.0'
pod 'YYModel'
pod 'MJRefresh'
pod 'KVOController'
pod 'AFNetworking', '3.2.0'
pod 'SVProgressHUD'
4.导入SDK
需要在宿主工程中导入如下SDK:
LMDeviceAccessNet.framework配网UI封装成的SDKLMSmartConnect.framework蓝牙模块和AP配网逻辑 SDKLMAppleHomeConnect.frameworkHomekit相关API封装 SDKLMFramework.framework基础SDK,Aqara的基础配置,宏定义以及通用逻辑的封装
资源文件:
LMAccessNet.bundle配网相关的图片资源LMFramework.bundleAqara 多语言文件

SDK初始化
在需要拉起 Aqara 配网的 Controller 引入头文件:
#import <LMDeviceAccessNet/LMDeviceAccessNet.h>
#import <LMFramework/LMFramework.h>
统一初始化
各参数获取方式详见环境搭建。
[LMOpenSDK setAppChannel:@"Your AppChannel"];
[LMOpenSDK setAppGroupId:@"Your AppGroupId"];
LMRegionModel *regionModel = [[LMRegionModel alloc] init];
regionModel.appId = @"Your appId";
regionModel.appKey = @"Your appKey";
regionModel.supportDeviceArea = @"Your SupportDeviceArea";
regionModel.serverCode = @"Your ServerCode";
regionModel.countryCode = @"Your CountryCode";
regionModel.server = @"Your Server";
regionModel.coapServer = @"Your CoapServer";
regionModel.staticsResPrefix = @"Your StaticsResPrefix";
regionModel.appImgPrefix = @"Your AppImgPrefix";
[LMOpenSDK setRegionModel:regionModel];
[LMOpenSDK setH5UrlPrefix:@"Your H5UrlPrefix"];
[LMOpenSDK setLanguage:@"zh-Hans"];
[LMOpenSDK setUserId:@"Your UserId" token:@"Your AccessToken"];
旧版
setServer:appId:appKey:iconBaseUrl:、setCoapServer:、setCountryCode:等接口已废弃,请统一使用setRegionModel:方式初始化。
配置配网用户信息
- (void)setAccessNetHomeId:(NSString *)homeId;
| 参数 | 说明 |
|---|---|
| homeId | 家庭位置 ID |
示例代码:
[LMAccessNetUISDK.sharedInstance setAccessNetHomeId:@"real1.103xxxxxx4"];
带配网设备列表
在宿主APP中跳转到Aqara的配网页面:
[LMAccessNetUISDK.sharedInstance pushSupportedDeviceListPage];
进入单设备配网流程
| 参数 | 说明 |
|---|---|
| model | 设备的模型值(从开放平台查询) |
| completion | 返回 controller对象/ error信息 |
-(void)presentSingleDeviceAccessNetWithModel:(NSString *)model completion:(void (^)(UIViewController *controller, NSError *error))completion;
示例代码:
[[LMAccessNetUISDK sharedInstance] presentSingleDeviceAccessNetWithModel:@"lumi.plug.macn01" completion:^(UIViewController * _Nonnull controller, NSError * _Nonnull error) {
if(controller) {
LMNavigationController *navi = [[LMNavigationController alloc] initWithRootViewController:controller];
navi.modalPresentationStyle = UIModalPresentationFullScreen;
[self presentViewController:navi animated:YES completion:nil];
} else {
[LHTipsUtils showError:error];
}
}];
配网成功以后的回掉方法:
LMAccessNetUISDK.sharedInstance.accessNetCallBack = ^(id _Nonnull response, NSError * _Nonnull error) {
NSLog(@"accessNetCallBack = %@", response);
};