门锁SDK使用

一、概述

本文主要介绍如何使用门锁SDK进行入网、设备控制

二、前置条件

  1. 完成准备工作
  2. 完成环境搭建
  3. 完成门锁SDK集成

三、使用

门锁SDK使用RN插件的形式支持不同设备,每一个设备单独一个插件文件。

3.1 SDK 配置

在 APP 启动的地方(如 AppDelegate),引入头文件并按以下步骤完成初始化。各参数获取方式详见环境搭建

#import <LMFramework/LMFramework.h>
#import <LMRnFramework/LMRnFramework.h>
统一初始化
/**
 必须最先按顺序设置以下两项,且必须在其他 SDK 配置之前调用。
 setAppChannel 与 setAppGroupId 需与宿主 App 的实际配置保持一致。
 */
[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"];

/**
 setLanguage:
 "en"           英文
 "ru"           俄文
 "ko"           韩文
 "zh-Hans"      简体中文
 "zh-HK"        香港繁体
 "zh-Hant-TW"   台湾繁体
 */
[LMOpenSDK setLanguage:@"zh-Hans"];

[LMOpenSDK setUserId:@"Your UserId" token:@"Your AccessToken"];

/**
 初始化 RN Bridge,门锁 SDK 必须调用
 */
[[LHRNManager shareManager] prepareBridge];

LMRegionModel 参数说明

字段 说明 获取渠道
appId 开放平台颁发的 App ID 开放平台
appKey 与 AppId 配套的 AppKey 开放平台
supportDeviceArea 设备入网地区 开放平台
serverCode 服务器地区码 开放平台
countryCode 国家码 开放平台
server Aqara 服务域名 开放平台
coapServer 设备接入服务器地址 开放平台
staticsResPrefix 静态资源路径 开放平台
appImgPrefix CDN 图片路径前缀 开放平台

其他初始化参数

字段 说明 获取渠道
h5UrlPrefix SDK 内 H5 资源路径 开放平台
userId 用户 ID 开放平台
token 用户访问令牌 开放平台
language SDK 多语言 见上表

旧版 [LMOpenSDK setServer:appId:appKey:iconBaseUrl:]setCoapServer:setCountryCode: 等接口已废弃,请统一使用 setRegionModel: 方式初始化。

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];
lumi LogoCopyright © 2023 深圳绿米联创科技有限公司 all right reserved,powered by Gitbook文档修改时间: 2026-08-26 16:55:47

results matching ""

    No results matching ""