iOS配网SDK

本SDK包含Aqara设备配网的逻辑部分和UI界面; SDK依赖 的iOS版本 不能低于11.0 编译器环境: XCode14.0 以上版本 语言:Object-C

集成SDK

1.环境搭建

配网SDK需要用到Homekit和Wi-Fi的权限功能,需要宿主工程添加以下Capability:

1. Homeikit
2. Wireless Accessory Configuration

2.权限配置

SDK需要向iOS申请以下系统权限:

1.NSHomeKitUsageDescription Homekit的访问权限 2.NSCameraUsageDescription 摄像机访问权限(扫描设备上的二维码进行配网) 3.NSLocalNetworkUsageDescription 本地网络查找权限(局域网配网) 4.NSLocationWhenInUseUsageDescription 使用地理位置权限(手机获取WiFi名称,iOS 13 需要确认App已开启地理位置权限。 iOS 14 需要确认App开启精确位置权限。 如果上述配置后仍然获取不到WiFi名称,则需要开发者另外处理,比如手动输入WiFi名称)

  1. NSBluetoothAlwaysUsageDescription 获取蓝牙权限 (蓝牙配网)
  2. 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:

  1. LMDeviceAccessNet.framework 配网UI封装成的SDK
  2. LMSmartConnect.framework 蓝牙模块和AP配网逻辑 SDK
  3. LMAppleHomeConnect.framework Homekit相关API封装 SDK
  4. LMFramework.framework 基础SDK,Aqara的基础配置,宏定义以及通用逻辑的封装

资源文件:

  1. LMAccessNet.bundle 配网相关的图片资源
  2. LMFramework.bundle Aqara 多语言文件

SDK初始化

在需要拉起Aqara配网的Controller引入头文件:

#import <LMDeviceAccessNet/LMDeviceAccessNet.h>
#import <LMFramework/LMFramework.h>
配置SDK
+ (void)setServer:(NSString*)host appId:(NSString*)appId appKey:(NSString*)appKey iconBaseUrl:(NSString *)iconBaseUrl;
参数 说明
host Aqara配网域名(见开放平台)
appId 从开放平台申请的APPID
appKey 与APPID配套的APPKey
iconBaseUrl 配网UI层部分CDN图片的路径

示例代码:

[LMOpenSDK setServer:@"https://aiot.aqara.com/" appId:@"7be19xxxxxxxxxxxxx" appKey:@"JddzxxxxxxxxxxIHfW8E3" iconBaseUrl:@"https://cdn.aqara.com/cdn/common/mainland"];

配置设备的服务器地址以及服务器区域码

+ (void)setCoapServer:(NSString*)coapServer;
+ (void)setCountryCode:(NSString*)countryCode;
参数 说明
coapServer 设备的服务器地址
countryCode 国家码

示例代码:

[LMOpenSDK setCoapServer:@"aiot-coap.aqara.cn"];
[LMOpenSDK setCountryCode:@"CHN"];

配置从开放平台申请到的用户信息和家庭信息

- (void)setAccessNetHomeId:(NSString *)homeId;
+ (void)setUserId:(NSString*)userId  token:(NSString*)token;
参数 说明
homeId 家庭位置ID
userId 用户ID
token 用户的token
[LMAccessNetUISDK.sharedInstance setAccessNetHomeId:@"real1.103xxxxxx4"];
[LMOpenSDK setUserId:@"431xxxxxx.xxxxxxx153527809" token:@"ad46dbxxxxxxxxx1fcee1"];
带配网设备列表

在宿主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);
};
Copyright © 2023 深圳绿米联创科技有限公司 all right reserved,powered by Gitbook文档修改时间: 2024-02-21 09:55:50

results matching ""

    No results matching ""