门锁SDK使用
一、概述
本文主要介绍如何使用门锁SDK进行入网、设备控制
二、前置条件
- 完成准备工作
- 完成环境搭建
- 完成门锁SDK集成
三、使用
门锁SDK使用RN插件的形式支持不同设备,每一个设备单独一个插件文件。
3.1 SDK 配置 *
在 APP 启动的地方,如 AppDelegate.m,引入头文件,并按照步骤依次进行初始化配置
#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)setUserId:(NSString*)userId token:(NSString*)token;
参数 | 说明 |
---|---|
userId | 用户ID |
token | 用户的token |
[LMOpenSDK setUserId:@"431xxxxxx.xxxxxxx153527809" token:@"ad46dbxxxxxxxxx1fcee1"];
3.2 跳转门锁入网
在需要的地方,导入 LMRnFramework 的头文件,点击跳转头文件,可查看相应接口说明
#import <LMRnFramework/LMBusiRnSDK.h>
API - 跳转门锁入网插件
/**
@param deviceModel 设备 model
@param positionId 位置 id
@param navC 导航控制器,默认获取最上层控制器
*/
- (void)startRnAccessPage: (NSString *)deviceModel
positionId:(NSString *)positionId
navC: (UINavigationController * _Nullable)navC;
参数说明
字段 | 数据类型 | 描述 | 获取渠道 |
---|---|---|---|
deviceModel | String | 设备模型值 | 参见附录支持的门锁设备清单 |
positionId | String | 房间位置 | 接口获取,详情参见Aqara开发者平台 |
示例代码:
[[LMBusiRnSDK shareManager] startRnAccessPage: @"aqara.lock.agl002" positionId:@"real1.xxxxxxxxxxxxxxxxxxx512" navC:nil];
3.3 跳转门锁控制插件
在需要的地方,导入 LMRnFramework 的头文件,点击跳转头文件,可查看相应接口说明
#import <LMRnFramework/LMBusiRnSDK.h>
API - 跳转门锁控制插件
/**
@param deviceId 设备 id
@param deviceModel 设备 model
@param navC 导航控制器,默认获取最上层控制器
*/
- (void)startRnDevicePage:(NSString *)deviceId
deviceModel: (NSString *)deviceModel
navC: (UINavigationController * _Nullable)navC;
字段 | 数据类型 | 描述 | 获取渠道 |
---|---|---|---|
deviceModel | String | 设备模型值 | 参见附录支持的门锁设备清单 |
deviceId | String | 设备Id | 设备配网成功后,会生成该设备id |
示例代码:
[[LMBusiRnSDK shareManager] startRnDevicePage:@"lumi.54efxxxxxxxxxxxxxc88b" deviceModel:@"aqara.lock.agl002" navC:nil];
3.4 插件消息订阅
API - 注册 rn 插件消息监听
/// @param callback 消息监听回调
/// @note message NSDictionary, 结构: { action: 'action_xxx_xxx', param: {... ... } }
/// --action:
/// action_access_success 门锁入网成功
/// action_add_gateway 添加网关
/// action_open_ifttt 打开自动化
/// action_open_scene 打开场景
- (void)registerRnPluginMessageNotification:(void(^_Nullable)(NSDictionary * _Nullable message))callback;
字段 | 数据类型 | 描述 | 获取渠道 |
---|---|---|---|
callback | Block | 消息监听回调 | 无 |
message | NSDictionary | 消息体 | 无 |
note: 请根据您项目的需要,订阅并解析相关action,自行处理消息事件
示例代码:
[[LMBusiRnSDK shareManager] registerRnPluginMessageNotification:^(NSDictionary * _Nullable message) {
NSLog(@"messsge: %@", message);
if (message && [message objectForKey: @"action_access_success"]) {
NSDictionary *param = [message objectForKey: @"param"];
/// TODO: 处理入网成功提示, 设备名称修改等
NSLog(@"--- 门锁入网成功 ---");
}
}];
API - 移除 rn 插件消息监听
- (void)unregisterRnPluginMessageNotification;
字段 | 数据类型 | 描述 | 获取渠道 |
---|---|---|---|
无 | 无 | 无 | 无 |
note: 请根据您项目的需要,如已注册插件消息监听,请在 dealloc 等适当的地方移除,以免内存泄漏
示例代码:
[[LMBusiRnSDK shareManager] unregisterRnPluginMessageNotification];