简体中文
简体中文
English
联系我们
注册
登录

蓝牙门锁

更新时间:2023-09-19 03:00:53下载pdf

本文介绍了蓝牙门锁功能列表以及与门锁成员、蓝牙连接、门锁记录、密码解锁、指纹解锁、卡片解锁等相关的操作。

类名介绍

类名 说明
ThingSmartBLELockDevice 蓝牙门锁设备操作类,继承自 ThingSmartDevice
ThingSmartBLELockDeviceDelegate 蓝牙门锁设备协议代理,拓展自 ThingSmartDeviceDelegate

名词解释

名词列表 说明
门锁劫持 指将特定的指纹、密码等,设置为劫持密码,当用户被劫持,并使用该密码开锁时,门会打开。同时,门锁将开门报警信息发送至家人手机或物业管理系统。
门锁成员 门锁成员分为 家庭成员非家庭成员
  • 家庭成员:涂鸦智能生活 App SDK 中的家庭成员概念。门锁 SDK 将对应的门锁密码编号与该账号关联起来。相关管理操作,请参考 家庭管理
  • 非家庭成员:即为门锁设备单独的成员,仅跟随门锁关联。用户可以创建并分配,门锁 SDK 将对应的门锁密码编号与该成员关联起来。
lockUserId 创建门锁成员时,云端为设备分配的固件成员 ID,代表着固件内记录的用户 ID。
userId 创建门锁成员时,云端分配的数据库记录 ID,代表着用户的唯一 ID。
dpCode 设备功能的标识符。每个设备功能都有对应的名称和编号,可参考 门锁功能列表

门锁成员

本小节介绍门锁成员中 非家庭成员 的管理操作。

查询门锁成员列表

接口说明

- (void)getMemberListWithSuccess:(nullable void(^)(NSArray<ThingSmartBLELockMemberModel *> *members))success
                         failure:(ThingFailureError)failure;

参数说明

参数 说明
success 成功回调,成员列表
failure 失败回调

ThingSmartBLELockMemberModel 数据模型

字段 类型 描述
userId NSString 成员编号 ID
userContact NSString 联系方式
avatarUrl NSString 头像地址
nickName NSString 成员名称
userTimeSet NSString 成员时效性数据
phase NSUInteger 冻结情况
  • 0:冻结
  • 1:解冻
status NSUInteger 用户状态
lockUserId int 门锁上的用户 ID
userType NSUInteger 用户类型
  • 10:管理员
  • 20:普通成员
  • 30:没有名称的成员
supportOpenType NSArray 支持的开锁方式
shareUser NSString 分享的用户账号
productAttribute NSUInteger 设备产品属性

示例代码

Objective-C:

[self.lock getMemberListWithSuccess:^(NSArray<ThingSmartBLELockMemberModel *> * _Nonnull list) {
    NSLog(@"成员列表 %@", list);
} failure:^(NSError *error) {
    NSLog(@"查询成员列表失败,error: %@", error);
}];

Swift:

    self.lock?.getMemberList(success: { (list) in
        print("成员列表 \(list)")
    }, failure: { (error) in
        if let e = error {
            print("查询成员列表失败, error: \(e)")
        }
    })

创建单个门锁成员

创建非家庭成员,后续可以单独为该成员绑定解锁方式。

App云端用户填写成员信息调用接口,创建用户生成门锁用户 ID、硬件成员 ID,返回创建结果处理、显示结果App云端创建门锁成员流程

接口说明

- (void)addMemberWithUserName:(NSString *)userName
                  allowUnlock:(BOOL)allowUnlock
                     timeType:(ThingMemberTimeType)timeType
                effectiveDate:(NSDate *)effectiveDate
                  invalidDate:(NSDate *)invalidDate
                      success:(nullable ThingSuccessBOOL)success
                      failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
userName 成员名称
allowUnlock 是否允许成员使用蓝牙解锁
timeType 时效性
  • ThingMemberTimeTypePermanent:表示永久
  • ThingMemberTimeTypePhase:表示分时间段
effectiveDate 生效时间
invalidDate 失效时间
success 成功回调
failure 失败回调

该接口仅创建非家庭成员。有关家庭成员的管理,请参考 家庭成员管理

示例代码

Objective-C:

    [self.lock addMemberWithUserName:#<成员名称># allowUnlock:YES timeType:ThingMemberTimeTypePhase effectiveDate:[NSDate date] invalidDate:[[NSDate date] dateByAddingTimeInterval:60 * 60 * 8] success:^(BOOL result) {
        NSLog(@"创建门锁成员成功");
    } failure:^(NSError *error) {
        NSLog(@"创建门锁成员失败,error: %@", error);
    }];

Swift:

    self.lock?.addMember(withUserName: "name", allowUnlock: true, timeType: .phase, effectiveDate: Date(), invalidDate: Date().addingTimeInterval(60 * 60 * 8), success: { (result) in
        print("创建门锁成员成功")
    }, failure: { (error) in
        if let e = error {
            print("创建门锁成员失败, error: \(e)")
        }
    })

修改门锁成员信息

修改门锁成员信息会和硬件进行交互,需要门锁保持蓝牙连接。

云端App门锁用户填写新的成员信息建立蓝牙连接发送更新用户信息指令回复更新结果调用接口,更新用户返回更新结果处理、显示结果云端App门锁更新门锁成员流程

接口说明

- (void)updateMemberWithUserName:(NSString *)userName
                        memberId:(NSString *)memberId
                     allowUnlock:(BOOL)allowUnlock
                        timeType:(ThingMemberTimeType)timeType
                   effectiveDate:(NSDate *)effectiveDate
                     invalidDate:(NSDate *)invalidDate
                         success:(nullable ThingSuccessBOOL)success
                         failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
userName 成员名称
memberId 成员 ID
allowUnlock 是否允许使用蓝牙解锁
timeType 时效性
  • ThingMemberTimeTypePermanent:表示永久
  • ThingMemberTimeTypePhase:表示分时间段
effectiveDate 生效时间
invalidDate 失效时间
success 成功回调
failure 失败回调

示例代码

Objective-C:

    [self.lock updateMemberWithUserName:@"new name" memberId:@"0000008byw" allowUnlock:YES timeType:ThingMemberTimeTypePermanent effectiveDate:[NSDate date] invalidDate:[[NSDate date] dateByAddingTimeInterval:60 * 60 * 8] success:^(BOOL result) {
        NSLog(@"更新门锁成员成功");
    } failure:^(NSError *error) {
        NSLog(@"创建门锁成员失败,error: %@", error);
    }];

Swift:

    self.lock?.updateMember(withUserName: "new name", memberId: "0000008byw", allowUnlock: true, timeType: .phase, effectiveDate: Date(), invalidDate: Date().addingTimeInterval(60 * 60 * 8), success: { (result) in
            print("更新门锁成员信息成功")
        }, failure: { (error) in
            if let e = error {
                print("更新门锁成员信息失败, error: \(e)")
            }
        })

删除单个门锁成员

删除门锁成员会和硬件进行交互,会删除该用户下所有的开锁方式、密码等,需要门锁保持蓝牙连接。

云端App门锁用户确认删除成员建立蓝牙连接发送删除用户信息指令回复删除结果调用接口,删除用户返回删除结果处理、显示结果云端App门锁删除门锁成员流程

接口说明

- (void)removeMemberWithMemberId:(NSString *)memberId
                         success:(nullable ThingSuccessBOOL)success
                         failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
memberId 成员编号 ID
success 成功回调
failure 失败回调

示例代码

Objective-C:

    [self.lock removeMemberWithMemberId:@"000000747d" success:^(BOOL result) {
        NSLog(@"删除门锁成员成功");
    } failure:^(NSError *error) {
        NSLog(@"删除门锁成员失败, error: %@", error);
    }];

Swift:

    self.lock?.removeMember(withMemberId: "", success: { (result) in
        print("删除门锁成员成功")
    }, failure: { (error) in
        if let e = error {
            print("删除门锁成员失败, error: \(e)")
        }
    })

修改单个成员时效(不支持低版本)

修改单个成员时效会和硬件进行交互,请保持门锁设备的蓝牙连接。

门锁App云端设备在线用户提交修改时效发送用户时效变更指令回复变更结果云端用户时效更新返回结果处理展示结果门锁App云端修改单个成员时效

接口说明

- (void)updateProLockMemberTimeWithDevId:(NSString *)devId
                                memberId:(NSString *)memberId
                           offlineUnlock:(BOOL)offlineUnlock
                                 isAdmin:(BOOL)isAdmin
                           effectiveDate:(nullable NSDate *)effectiveDate
                             invalidDate:(nullable NSDate *)invalidDate
                                schedule:(ThingSmartBLELockTimeScheduleInfo *)scheduleInfo
                                 success:(ThingSuccessID)success
                                 failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
memberId 成员编号 ID
offlineUnlock 是否支持离线解锁
isAdmin 是否管理员
effectiveDate 生效时间
invalidDate 失效时间
scheduleInfo 时效信息
success 成功回调
failure 失败回调

示例代码

Objective-C:

  //入参数据查询,详见 Demo
    [self.bleDevice updateProLockMemberTimeWithDevId:self.bleDevice.deviceModel.devId
                                            memberId:[self.dataSource[@"userId"] stringValue]
                                       offlineUnlock:NO
                                             isAdmin:isAdmin
                                       effectiveDate:[self.timeView getEffectiveData]
                                         invalidDate:[self.timeView getInvalidData]
                                            schedule:[self.timeView getScheduleInfo]
                                             success:^(id result) {
                NSLog(@"更新成员时效成功");
    } failure:^(NSError *error) {
                 NSLog(@"更新成员时效失败");
    }];

蓝牙连接

蓝牙门锁需要 App 开启蓝牙后,部分功能才能正常使用。

查询蓝牙连接状态

蓝牙门锁需要 App 开启蓝牙后,部分功能才能正常使用。SDK 在正常情况下会自动连接,通常使用以下方法进行设备连接状态判断。

/// 设备和手机是否已建立蓝牙连接,如果为 NO,可以调用 autoConnect 进行连接
- (BOOL)isBLEConnected;

/// 查询设备连接状态(可判断网关是否在线)
- (BOOL)isOnline;

门锁蓝牙连接

如果查询结果显示门锁未连接蓝牙,调用此接口可以连接到门锁。

/// 如果没有连接成功或使用过程中断开,可以调用此方法进行连接
- (void)autoConnect;

蓝牙解锁和落锁

蓝牙近程解锁

用户App门锁蓝牙开启,连接上门锁单击开锁发送蓝牙开锁指令收到蓝牙开锁指令,开锁返回开锁结果处理、显示结果用户App门锁蓝牙解锁开门流程

接口说明

- (void)bleUnlock:(NSString *)lockUserId
          success:(ThingSuccessHandler)success
          failure:(ThingFailureError)failure;

参数说明

参数 说明
status 开锁还是关锁
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

    ThingSmartBLELockDevice *lock = [ThingSmartBLELockDevice deviceWithDeviceId:@"your_lock_device_id"];
    [lock bleCurrentMemberDetailWithDevId:self.devId gid:self.lock.deviceModel.homeId success:^(NSDictionary *dict) {
                NSString *bleUnlock = [dict objectForKey:@"lockUserId"];
                [self.bleLockDevice bleUnlock:bleUnlock success:^{
                    NSLog(@"开锁成功!");
                } failure:^(NSError *error) {
                    NSLog(@"开锁失败!");
                }];
            } failure:^(NSError *error) {
                NSLog(@"bleCurrentMemberDetailWithDevId failure!");
            }];

Swift:

    let lockDevice = ThingSmartBLELockDevice(deviceId: "your_lock_device_id")
    self.lock?.unlock(withStatus: status, success: {
        print("开锁成功")
    }, failure: { (error) in
        if let e = error {
            print("开锁失败,error: \(e)")
        }
    })

蓝牙近程落锁

用户App门锁蓝牙开启,连接上门锁单击落锁发送蓝牙落锁指令收到蓝牙落锁指令,开锁返回落锁结果处理、显示结果用户App门锁蓝牙落锁流程

接口说明

- (void)bleManualLock:(ThingSuccessHandler)success
              failure:(ThingFailureError)failure;

参数说明

参数 说明
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

    ThingSmartBLELockDevice *lock = [ThingSmartBLELockDevice deviceWithDeviceId:@"your_lock_device_id"];
    [lock bleManualLock:^{
                NSLog(@"落锁成功!");
            } failure:^(NSError *error) {
                NSLog(@"落锁失败: %ld", error.code);
            }];

Swift:

    let lockDevice = ThingSmartBLELockDevice(deviceId: "your_lock_device_id")
    self.lock?.manualLock(withStatus: status, success: {
        print("落锁成功")
    }, failure: { (error) in
        if let e = error {
            print("落锁失败,error: \(e)")
        }
    })

蓝牙远程开关锁

门锁网关云端App用户连接单击开/关锁发送开/关锁请求下发开/关锁指令收到指令、开/关锁返回结果返回结果返回结果处理展示结果门锁网关云端App用户蓝牙落锁流程

接口说明

//远程解锁
- (void)remoteSwitchLock:(ThingSuccessBOOL)success
                 failure:(ThingFailureError)failure;
//远程关锁
- (void)manualLockWithStatus:(ThingSuccessHandler)success
                     failure:(ThingFailureError)failure;

参数说明

参数 说明
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

  ThingSmartBLELockDevice *lock = [ThingSmartBLELockDevice deviceWithDeviceId:@"your_lock_device_id"];
  [lock remoteSwitchLock:^{
              NSLog(@"远程解锁成功");
          } failure:^(NSError *error) {
              NSLog(@"远程解锁成功: %ld", error.code);
          }];

  [lock manualLockWithStatus:^{
              NSLog(@"远程落锁成功");
          } failure:^(NSError *error) {
              NSLog(@"远程落锁成功: %ld", error.code);
          }];

门锁记录

查询门锁告警记录

接口说明

- (void)getAlarmRecordListWithOffset:(int)offset
                               limit:(int)limit
                             success:(nullable void(^)(NSArray<ThingSmartLockRecordModel *> *records))success
                             failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
offset 页数
limit 条数
success 成功回调,结果为记录列表
failure 失败回调

ThingSmartLockRecordModel 数据模型

字段 类型 描述
userId NSString 成员 ID
userName NSString 用户昵称
time NSTimeInterval 发生时间,13 位时间戳
devId NSString 设备 ID
dpData NSDictionary DP 数据
tags NSInteger 标位
  • 0:表示其他
  • 1:表示劫持报警
dpsArray NSArray<NSDictionary *> 设备功能的数据组

示例代码

Objective-C:

    [self.lock getAlarmRecordListWithOffset:0 limit:50 success:^(NSArray<ThingSmartLockRecordModel *> * _Nonnull records) {
        NSLog(@"告警记录: %@", records);
    } failure:^(NSError *error) {
        NSLog(@"查询告警记录失败,error: %@", error);
    }];

Swift:

    self.lock?.getAlarmRecordList(withOffset: 0, limit: 50, success: { (records) in
        print("告警记录 \(records)")
    }, failure: { (error) in
        if let e = error {
            print("查询告警记录失败, error: \(e)")
        }
    })

查询门锁开锁记录

接口说明

- (void)getUnlockRecordListWithOffset:(int)offset
                                limit:(int)limit
                              success:(nullable void(^)(NSArray<ThingSmartBLELockRecordModel *> *records))success
                              failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
offset 页数
limit 条数
success 成功回调,结果为记录列表
failure 失败回调

示例代码

Objective-C:

    [self.lock getUnlockRecordListWithOffset:0 limit:50 success:^(NSArray<ThingSmartLockRecordModel *> * _Nonnull records) {
        NSLog(@"开锁记录: %@", records);
    } failure:^(NSError *error) {
        NSLog(@"查询开锁记录失败,error: %@", error);
    }];

Swift:

    self.lock?.getUnlockRecordList(withOffset: 0, limit: 50, success: { (records) in
        print("开锁记录 \(records)")
    }, failure: { (error) in
        if let e = error {
            print("查询开锁记录失败, error: \(e)")
        }
    })

查询带筛选的新版记录(日志组件)

接口说明

- (void)getProUnlockRecordListWithDevId:(NSString *)devId
                          logCategories:(NSString *)logCategories
                                userIds:(NSString *)userIds
                    onlyShowMediaRecord:(BOOL)onlyShowMediaRecord
                              startTime:(NSInteger)startTime
                                endTime:(NSInteger)endTime
                             lastRowKey:(NSString *)lastRowKey
                                  limit:(NSInteger)limit
                                success:(ThingSuccessID)success
                                failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 页数
logCategories 日志大类
  • 操作日志:operation
  • 开门记录:unlock_record
  • 关门记录:close_record
  • 告警记录:alarm_record
userIds 需要筛选的用户 ID 列表,ID 之间以逗号(,)分隔,例如 12,13
onlyShowMediaRecord 是否仅显示带图片或者视频的记录,默认为 False,显示所有记录。
startTime 开始时间,单位为毫秒
endTime 结束时间,单位为毫秒
lastRowKey 上一页的数据 key
limit 每页数据个数
success 成功回调
failure 失败回调

示例代码

Objective-C:

    [self.bleDevice getProUnlockRecordListWithDevId:self.bleDevice.deviceModel.devId
                                          logCategories:self.logCategories
                                                userIds:self.userIds
                                    onlyShowMediaRecord:NO
                                              startTime:self.startTime
                                                endTime:self.endTime
                                             lastRowKey:@""
                                                  limit:50
                                                success:^(id result) {
            NSLog(@"查询日志成功");
        } failure:^(NSError *error) {
            NSLog(@"查询日志失败");
        }];

密码解锁

添加普通密码

普通密码的时效性跟随成员的时效性,添加时需要门锁保持蓝牙连接。

云端App门锁用户确认密码信息建立蓝牙连接发送添加密码指令,发送密码信息回复添加结果调用接口,设置防劫持返回结果处理、显示结果云端App门锁添加密码解锁方式流程

接口说明

- (void)addPasswordForMemberWithMemberId:(NSString *)memberId
                                password:(NSString *)password
                              unlockName:(NSString *)unlockName
                           needHijacking:(BOOL)needHijacking
                                 success:(nullable ThingSuccessString)success
                                 failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
memberId 成员编号 ID
password 纯数字密码
unlockName 密码名称
needHijacking 是否需要设置为防劫持
success 成功回调
failure 失败回调

示例代码

Objective-C:

    [self.lock addPasswordForMemberWithMemberId:@"00000074zg" password:@"774642" unlockName:@"密码 774642" needHijacking:YES success:^(NSString *result) {
         NSLog(@"创建密码成功");
    } failure:^(NSError *error) {
         NSLog(@"创建密码失败 %@", error);
    }];

Swift:

    self.lock?.addPasswordForMember(withMemberId: "00000074zg", password: "774642", unlockName: "密码 774642", needHijacking: true, success: { (result) in
        print("创建密码成功")
    }, failure: { (error) in
        if let e = error {
            print("创建密码失败, error: \(e)")
        }
    })

查询普通密码列表

接口说明

- (void)getPasswordListWithSuccess:(nullable void(^)(NSArray<ThingSmartBLELockOpmodeModel *> *models))success
                           failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
success 成功回调,普通密码列表
failure 失败回调

ThingSmartBLELockOpmodeModel 数据模型

字段 类型 描述
opmode NSString 开锁方式
sourceAttribute NSUInteger 开锁方式来源
  • 1:App
  • 2:门锁离线录入
  • 3:门锁超管理员录入
unlockName NSString 开锁方式名称
userName NSString 开锁用户名称
lockUserId long long 硬件内门锁成员 ID
userId NSString 成员编号 ID
opmodeValue NSString 开锁方式值,一般记录为门锁编号
opmodeId NSString 开锁方式的功能 ID
unlockAttr NSUInteger 解锁方式属性,1 代表门锁劫持开锁

示例代码

Objective-C:

    [self.lock getPasswordListWithSuccess:^(NSArray<ThingSmartBLELockOpmodeModel *> * _Nonnull models) {
        NSLog(@"查询密码列表 %@", models);
    } failure:^(NSError *error) {
        NSLog(@"查询密码列表失败 %@", error);
    }];

Swift:

    self.lock?.getPasswordList(success: { (models) in
        print("查询密码列表 \(models)")
    }, failure: { (error) in
        if let e = error {
            print("查询密码列表失败, error: \(e)")
        }
    })

删除普通密码

删除普通密码时,需要门锁保持蓝牙连接。

云端App门锁用户确认删除密码建立蓝牙连接发送删除密码指令回复删除结果调用接口,删除云端记录返回结果处理、显示结果云端App门锁删除密码解锁方式流程

接口说明

- (void)removePasswordForMemberWithOpmodeModel:(ThingSmartBLELockOpmodeModel *)opmodeModel
                                       success:(ThingSuccessHandler)success
                                       failure:(ThingFailureError)failure;

参数说明

参数 说明
opmodeModel 开锁方式模型信息,来源自开锁方式列表

示例代码

Objective-C:

    [self.lock removePasswordForMemberWithOpmodeModel:model success:^{
        NSLog(@"删除开锁方式成功");
    } failure:^(NSError *error) {
        NSLog(@"删除开锁方式失败 %@", error);
    }];

Swift:

    self.lock?.removePasswordForMember(with: model, success: {
        print("删除开锁方式成功")
    }, failure: { (error) in
        if let e = error {
            print("删除开锁方式失败, error: \(e)")
        }
    })

指纹解锁

添加指纹密码

添加指纹密码需要与门锁频繁的交互,添加时需要门锁保持蓝牙连接。

用户门锁App云端发起添加指纹请求建立蓝牙连接发送开锁添加密码指令回复开锁录入指纹请求,需录入次数信息等等展示录入数据信息a 录入指纹a 返回录入结果,剩余录入信息a 展示录入数据信息b 持续录入指纹b 返回录入结果,剩余录入信息b 展示录入数据信息...持续录入指纹录入指纹录入完成,返回最终录入结果展示录入数据结果信息汇总数据信息,合并接口参数数据调用接口,设置防劫持返回结果处理、显示结果用户门锁App云端添加指纹密码解锁方式流程

接口说明

- (void)addFingerPrintForMemberWithMemberId:(NSString *)memberId
                                 unlockName:(NSString *)unlockName
                              needHijacking:(BOOL)needHijacking
                                    success:(ThingSuccessString)success
                                    failure:(ThingFailureError)failure;

参数说明

参数 说明
memberId 成员编号 ID
unlockName 密码名称
needHijacking 是否需要设置为防劫持
success 成功回调
failure 失败回调

示例代码

Objective-C:

    // 设置代理,以接受和展示过程数据
    self.lock.delegate = self;
    [self.lock addFingerPrintForMemberWithMemberId:@"00000074zg" unlockName:@"添加的指纹" needHijacking:YES success:^(NSString *result) {
        NSLog(@"添加指纹成功");
    } failure:^(NSError *error) {
        NSLog(@"添加指纹失败,error: %@", error);
    }];

// ThingSmartBLELockDeviceDelegate
    - (void)device:(ThingSmartBLELockDevice *)device didReceiveAddOpMessage:(ThingSmartBLELockOpMessageModel *)opMessage {
        NSLog(@"收到新增开锁方式回调消息");
    }

Swift:

    self.lock?.delegate = self
    self.lock?.addFingerPrintForMember(withMemberId: "", unlockName: "", needHijacking: true, success: { (result) in
        print("添加指纹成功")
    }, failure: { (error) in
        if let e = error {
            print("添加指纹失败, error: \(e)")
        }
    })

// ThingSmartBLELockDeviceDelegate
    extension ViewController :ThingSmartBLELockDeviceDelegate {

        func device(_ device: ThingSmartBLELockDevice, didReceiveAddOpMessage opMessage: ThingSmartBLELockOpMessageModel) {
            print("收到新增开锁方式回调消息")
        }
    }

查询指纹列表

接口说明

- (void)getFingerPrintListWithSuccess:(nullable void(^)(NSArray<ThingSmartBLELockOpmodeModel *> *models))success
                              failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
success 成功回调,指纹列表
failure 失败回调

示例代码

Objective-C:

    [self.lock getFingerPrintListWithSuccess:^(NSArray<ThingSmartBLELockOpmodeModel *> * _Nonnull models) {
        NSLog(@"查询指纹列表 %@", models);
    } failure:^(NSError *error) {
        NSLog(@"查询指纹列表失败 %@", error);
    }];

Swift:

    self.lock?.getFingerPrintList(success: { (models) in
        print("查询指纹列表 \(models)")
    }, failure: { (error) in
        if let e = error {
            print("查询指纹列表失败, error: \(e)")
        }
    })

删除指纹密码

删除指纹时,需要门锁保持蓝牙连接。

云端App门锁用户确认删除指纹建立蓝牙连接发送删除密码指令回复删除结果调用接口,删除云端记录返回结果处理、显示结果云端App门锁删除指纹解锁方式流程

接口说明

- (void)removeFingerPrintForMemberWithOpmodeModel:(ThingSmartBLELockOpmodeModel *)opmodeModel
                                           success:(ThingSuccessHandler)success
                                          failure:(ThingFailureError)failure;

参数说明

参数 说明
opmodeModel 开锁方式模型信息,来源自开锁方式列表

示例代码

Objective-C:

    [self.lock removeFingerPrintForMemberWithOpmodeModel:model success:^{
        NSLog(@"删除开锁方式成功");
    } failure:^(NSError *error) {
        NSLog(@"删除开锁方式失败 %@", error);
    }];

Swift:

    self.lock?.removeFingerPrintForMember(with: model, success: {
        print("删除开锁方式成功")
    }, failure: { (error) in
        if let e = error {
            print("删除开锁方式失败, error: \(e)")
        }
    })

卡片解锁

添加卡片解锁

添加卡片解锁时,需要门锁保持蓝牙连接。

云端App门锁用户确认卡片信息建立蓝牙连接发送添加卡片密码指令,发送密码信息回复添加结果调用接口,设置防劫持返回结果处理、显示结果云端App门锁添加卡片解锁方式流程

接口说明

- (void)addCardForMemberWithMemberId:(NSString *)memberId
                          unlockName:(NSString *)unlockName
                       needHijacking:(BOOL)needHijacking
                             success:(ThingSuccessString)success
                             failure:(ThingFailureError)failure;

参数说明

参数 说明
memberId 成员编号 ID
unlockName 密码名称
needHijacking 是否需要设置为防劫持
success 成功回调
failure 失败回调

示例代码

Objective-C:

    [self.lock addCardForMemberWithMemberId:@"00000074zg" unlockName:@"卡片密码 1" needHijacking:YES success:^(NSString *result) {
         NSLog(@"创建卡片密码成功");
    } failure:^(NSError *error) {
         NSLog(@"创建密码失败 %@", error);
    }];

Swift:

    self.lock?.addCardForMember(withMemberId: "00000074zg", unlockName: "卡片密码 1", needHijacking: true, success: { (result) in
        print("创建卡片密码成功")
    }, failure: { (error) in
        if let e = error {
            print("创建密码失败, error: \(e)")
        }
    })

查询卡片列表

接口说明

- (void)getCardListWithSuccess:(nullable void(^)(NSArray<ThingSmartBLELockOpmodeModel *> *models))success
                       failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
success 成功回调,卡片密码列表
failure 失败回调

示例代码

Objective-C:

    [self.lock getCardListWithSuccess:^(NSArray<ThingSmartBLELockOpmodeModel *> * _Nonnull models) {
        NSLog(@"查询卡片密码列表 %@", models);
    } failure:^(NSError *error) {
        NSLog(@"查询卡片密码列表失败 %@", error);
    }];

Swift:

    self.lock?.getCardList(success: { (models) in
        print("查询卡片密码列表 \(models)")
    }, failure: { (error) in
        if let e = error {
            print("查询卡片密码列表失败, error: \(e)")
        }
    })

删除卡片解锁

删除卡片解锁方式时,需要门锁保持蓝牙连接。

云端App门锁用户确认删除卡片建立蓝牙连接发送删除卡片密码指令回复删除结果调用接口,删除云端记录返回结果处理、显示结果云端App门锁删除卡片解锁方式流程

接口说明

- (void)removeCardForMemberWithOpmodeModel:(ThingSmartBLELockOpmodeModel *)opmodeModel
                                   success:(ThingSuccessHandler)success
                                   failure:(ThingFailureError)failure;

参数说明

参数 说明
opmodeModel 开锁方式模型信息,来源自开锁方式列表

示例代码

Objective-C:

    [self.lock removeCardForMemberWithOpmodeModel:model success:^{
        NSLog(@"删除开锁方式成功");
    } failure:^(NSError *error) {
        NSLog(@"删除开锁方式失败 %@", error);
    }];

Swift:

    self.lock?.removeCardForMember(with: model, success: {
        print("删除开锁方式成功")
    }, failure: { (error) in
        if let e = error {
            print("删除开锁方式失败, error: \(e)")
        }
    })

管理解锁方式

查询成员已绑定的解锁方式列表

接口说明

- (void)getProBoundUnlockOpModeListWithDevId:(NSString *)devId
                                      userId:(NSString *)userId
                                     success:(ThingSuccessID)success
                                     failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
userId 成员 ID
success 成功回调
failure 失败回调

示例代码

Objective-C:

[self.bleDevice getProBoundUnlockOpModeListWithDevId:self.bleDevice.deviceModel.devId
                                                  userId:[self.dataSource[@"userId"] stringValue]
                                                 success:^(id result) {
                NSLog(@"列表请求成功");
    } failure:^(NSError *error) {
                NSLog(@"列表请求失败");
    }];

判断是否有需要分配的开锁方式

接口说明

- (void)isProNeedAllocUnlockOpModeWithDevId:(NSString *)devId
                                    success:(ThingSuccessID)success
                                    failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
success 成功回调
failure 失败回调

示例代码

Objective-C:

[self.bleDevice isProNeedAllocUnlockOpModeWithDevId:self.bleDevice.deviceModel.devId
                                                success:^(id result) {
                NSLog(@"接口请求成功");
    } failure:^(NSError *error) {
                NSLog(@"接口请求失败");
    }];

查询成员未绑定的解锁方式列表

接口说明

- (void)getProUnboundUnlockOpModeListWithDevId:(NSString *)devId
                                       success:(ThingSuccessID)success
                                       failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
success 成功回调
failure 失败回调

示例代码

Objective-C:

[self.bleDevice getProUnboundUnlockOpModeListWithDevId:self.bleDevice.deviceModel.devId
                                                   success:^(id result) {
                NSLog(@"查询列表成功");
    } failure:^(NSError *error) {
                NSLog(@"查询列表失败");
    }];

开锁方式分配到人

接口说明

- (void)allocProUnlockOpModeWithDevId:(NSString *)devId
                               userId:(NSString *)userId
                            unlockIds:(NSString *)unlockIds
                              success:(ThingSuccessID)success
                              failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
userId 成员 ID
unlockIds 解锁方式 ID
success 成功回调
failure 失败回调

示例代码

Objective-C:

//userId:被分配的成员 userId unlockIds:解锁方式 ID
    [self.bleDevice allocProUnlockOpModeWithDevId:self.bleDevice.deviceModel.devId
                                           userId:userId
                                        unlockIds:@[unlockId].thingsdk_JSONString
                                          success:^(id result) {
        NSLog(@"分配成功");
    } failure:^(NSError *error) {
                 NSLog(@"分配失败");
    }];

通用拓展解锁

添加解锁方式

添加通用解锁方式时,需要门锁保持蓝牙连接。

云端App门锁用户确认解锁方式信息建立蓝牙连接发送添加解锁方式信息回复添加结果调用接口,设置防劫持返回结果处理、显示结果云端App门锁添加通用解锁方式流程

接口说明

- (void)addUnlockOpmodeForMemberWithMemberId:(NSString *)memberId
                                     isAdmin:(BOOL)isAdmin
                                unlockDpCode:(NSString *)unlockDpCode
                                unlockOpType:(ThingUnlockOpType)unlockOpType
                                  unlockName:(NSString *)unlockName
                               effectiveDate:(nullable NSDate *)effectiveDate
                                 invalidDate:(nullable NSDate *)invalidDate
                                       times:(int)times
                                  dataLength:(int)dataLength
                                 dataContent:(NSString *)dataContent
                                     timeout:(NSTimeInterval)timeout
                               needHijacking:(BOOL)needHijacking
                                     success:(nullable ThingSuccessString)success
                                     failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
memberId 成员编号 ID
isAdmin 是否是管理员
unlockDpCode 解锁方式对应的功能标识,详细可查看 门锁功能列表,例如卡片解锁对应 unlock_card
unlockOpType 解锁方式,可查看 ThingUnlockOpType 枚举
unlockName 解锁方式名称
effectiveDate 生效时间
invalidDate 失效时间
times 解锁方式可用次数
dataLength 数据长度,需要和数据内容长度保持一致
dataContent 数据内容
timeout 命令响应超时时间,如果是需要用户交互的,例如指纹,不用设置超时
needHijacking 是否需要设置防劫持
success 成功回调
failure 失败回调

示例代码

Objective-C:

    [self.lock addUnlockOpmodeForMemberWithMemberId:@"00000074zg"
                                            isAdmin:NO
                                       unlockDpCode:@"unlock_password"
                                       unlockOpType:ThingUnlockOpTypePassword
                                         unlockName:@"密码 774641"
                                      effectiveDate:nil
                                        invalidDate:nil
                                              times:10
                                         dataLength:6
                                        dataContent:@"774641"
                                            timeout:6
                                      needHijacking:YES
                                            success:^(NSString *result) {
        NSLog(@"添加成功");
    } failure:^(NSError *error) {
        NSLog(@"添加失败 %@", error);
    }];

Swift:

    self.lock?.addUnlockOpmodeForMember(withMemberId: "00000074zg", isAdmin: false, unlockDpCode: "unlock_password", unlockOpType: ThingUnlockOpTypePassword, unlockName: "密码 774641", effectiveDate: nil, invalidDate: nil, times: 10, dataLength: 6, dataContent: "774641", timeout: 5, needHijacking: true, success: { (result) in
         print("添加成功")
    }, failure: { (error) in
        if let e = error {
            print("添加失败, error: \(e)")
        }
    })

更新解锁方式

修改、更新通用的解锁方式时,需要门锁保持蓝牙连接。

云端App门锁用户确认新解锁方式信息建立蓝牙连接发送更新解锁方式信息回复更新结果调用接口,设置防劫持返回结果处理、显示结果云端App门锁通用修改解锁方式流程

接口说明

- (void)modifyUnlockOpmodeForMemberWithMemberId:(NSString *)memberId
                                       opmodeId:(NSString *)opmodeId
                                        isAdmin:(BOOL)isAdmin
                                     firmwareId:(int)firmwareId
                                   unlockDpCode:(NSString *)unlockDpCode
                                   unlockOpType:(ThingUnlockOpType)unlockOpType
                                     unlockName:(NSString *)unlockName
                                  effectiveDate:(nullable NSDate *)effectiveDate
                                    invalidDate:(nullable NSDate *)invalidDate
                                          times:(int)times
                                     dataLength:(int)dataLength
                                    dataContent:(NSString *)dataContent
                                        timeout:(NSTimeInterval)timeout
                                  needHijacking:(BOOL)needHijacking
                                        success:(nullable ThingSuccessBOOL)success
                                        failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
memberId 成员编号 ID
opmodeId 开锁方式 ID,来源查询的开锁方式列表
isAdmin 是否是管理员
firmwareId 硬件 ID
unlockDpCode 解锁方式对应的功能标识,详细可查看 门锁功能列表,例如卡片解锁对应 unlock_card
unlockOpType 解锁方式,可查看 ThingUnlockOpType 枚举
unlockName 解锁方式名称
effectiveDate 生效时间
invalidDate 失效时间
times 解锁方式可用次数
dataLength 数据长度,需要和数据内容长度保持一致
dataContent 数据内容
timeout 命令响应超时时间,如果是需要用户交互的,例如指纹,不用设置超时
needHijacking 是否需要设置防劫持
success 成功回调
failure 失败回调

示例代码

Objective-C:

    [self.lock modifyUnlockOpmodeForMemberWithMemberId:@"00000074zg"
                                              opmodeId:@"232323"
                                               isAdmin:NO
                                            firmwareId:15 //来源自开锁方式数据中的 opmodevalue
                                          unlockDpCode:@"unlock_password"
                                          unlockOpType:ThingUnlockOpTypePassword
                                            unlockName:@"密码 774641"
                                         effectiveDate:nil
                                           invalidDate:nil
                                                 times:10
                                            dataLength:6
                                           dataContent:@"774641"
                                               timeout:6
                                         needHijacking:YES
                                               success:^(NSString *result) {
        NSLog(@"更新成功");
    } failure:^(NSError *error) {
        NSLog(@"更新失败 %@", error);
    }];

Swift:

    self.lock?.modifyUnlockOpmodeForMember(withMemberId: "00000074zg", opmodeId: "232323", isAdmin: false, firmwareId: 15, unlockDpCode: "unlock_password", unlockOpType: ThingUnlockOpTypePassword, unlockName: "密码 774641", effectiveDate: nil, invalidDate: nil, times: 10, dataLength: 6, dataContent: "774641", timeout: 5, needHijacking: true, success: { (result) in
        print("更新成功")
    }, failure: { (error) in
        if let e = error {
            print("更新失败, error: \(e)")
        }
    })

删除解锁方式

接口说明

- (void)removeUnlockOpmodeForMemberWithOpmodeModel:(ThingSmartBLELockOpmodeModel *)opmodeModel
                                           isAdmin:(BOOL)isAdmin
                                      unlockDpCode:(NSString *)unlockDpCode
                                      unlockOpType:(ThingUnlockOpType)unlockOpType
                                           timeout:(NSTimeInterval)timeout
                                           success:(ThingSuccessHandler)success
                                           failure:(ThingFailureError)failure;

参数说明

参数 说明
opmodeModel 开锁方式模型
isAdmin 是否是管理员
unlockDpCode 解锁方式对应的功能标识,详细可查看 门锁功能列表,例如卡片解锁对应 unlock_card
unlockOpType 解锁方式,可查看 ThingUnlockOpType 枚举
timeout 命令响应超时时间,如果是需要用户交互的,例如指纹,不用设置超时
success 成功回调
failure 失败回调

示例代码

Objective-C:

    [self.lock removeUnlockOpmodeForMemberWithOpmodeModel:model
                                                  isAdmin:NO
                                             unlockDpCode:@"unlock_password"
                                             unlockOpType:ThingUnlockOpTypePassword
                                                  timeout:10
                                                  success:^{
        NSLog(@"删除成功");
    } failure:^(NSError *error) {
        NSLog(@"删除失败 %@", error);
    }]

Swift:

    self.lock?.removeUnlockOpmodeForMember(with: model, isAdmin: false, unlockDpCode: "unlock_password", unlockOpType: ThingUnlockOpTypePassword, timeout: 10, success: {
        print("删除成功")
    }, failure: { (error) in
        if let e = error {
            print("删除失败, error: \(e)")
        }
    })

密码管理

查询动态密码

接口说明

- (void)getLockDynamicPasswordWithSuccess:(nullable ThingSuccessString)success
                                  failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
success 接口成功回调,返回结果为对应查询的动态密码
failure 接口失败回调

示例代码

Objective-C:

    ThingSmartBLELockDevice *lock = [ThingSmartBLELockDevice deviceWithDeviceId:@"your_lock_device_id"];
    [lock getLockDynamicPasswordWithSuccess:^(NSString *result) {
        NSLog(@"动态密码查询结果 %@", result);
    } failure:^(NSError *error) {
        NSLog(@"error %@", error);
    }];

Swift:

    let lockDevice = ThingSmartBLELockDevice(deviceId: "your_lock_device_id")
    lockDevice?.getLockDynamicPassword(success: { (pwd) in
        print("动态密码查询结果 \(pwd)")
    }, failure: { (error) in
        if let e = error {
            print("error \(e)")
        }
    })

查询配置信息

查询面板配置信息,包含密码进制类型等。

接口说明

- (void)getLockDeviceConfigWithProductId:(NSString *)productId
                                 options:(NSString *)options
                                 success:(ThingSuccessID)success
                                 failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
productId 产品 ID
options 查询项,包括 uiContentcloudDppowerCode
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

   [self.bleDevice getLockDeviceConfigWithProductId:self.bleLockDevice.deviceModel.productId
                                                     options:@"uiContent,cloudDp,powerCode"
                                                     success:^(id result) {
                                    NSLog(@"接口成功");
            } failure:^(NSError *error) {
                                    NSLog(@"接口报错");
            }];

添加不限次数密码、单次密码、清空码(清空所有)

接口说明

该接口适用低版本公版门锁。

- (void)getOfflinePasswordWithDevId:(NSString *)devId
                            pwdType:(NSString *)pwdType
                           gmtStart:(NSInteger)gmtStart
                         gmtExpired:(NSInteger)gmtExpired
                            pwdName:(NSString *)pwdName
                            success:(ThingSuccessID)success
                            failure:(nullable ThingFailureError)failure;

接口说明

该接口适用于 Pro 门锁。

- (void)getProOfflinePasswordWithDevId:(NSString *)devId
                               pwdType:(NSString *)pwdType
                              gmtStart:(NSInteger)gmtStart
                            gmtExpired:(NSInteger)gmtExpired
                               pwdName:(NSString *)pwdName
                               success:(ThingSuccessID)success
                               failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
pwdType 密码类型
  • 0:多次
  • 1:单次
  • 9:清空密码
gmtStart 开始时间,如果是非多次密码,暂时设置为 0
gmtExpired 结束时间,如果是非多次密码,暂时设置为 0
pwdName 密码名称
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

//离线一次性密码
[self.bleDevice getOfflinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                            pwdType:@"1"
                                           gmtStart:0
                                         gmtExpired:0
                                            pwdName:@"离线一次性密码"
                                            success:^(id result) {
                                    NSLog(@"接口成功");
        } failure:^(NSError *error) {
                                    NSLog(@"接口报错");
        }];

//低版本公版不限次数密码
[self.bleDevice getOfflinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                            pwdType:@"0"
                                           gmtStart:effectiveTime
                                         gmtExpired:invalidTime
                                            pwdName:@"低版本公版不限次数密码"
                                            success:^(id result) {
                                    NSLog(@"接口成功");
        } failure:^(NSError *error) {
                                    NSLog(@"接口报错");
        }];

//低版本公版清空码(所有)
[self.bleDevice getOfflinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                            pwdType:@"9"
                                           gmtStart:0
                                         gmtExpired:0
                                            pwdName:@"低版本公版清空码(所有)"
                                            success:^(id result) {
                                    NSLog(@"接口成功");
        } failure:^(NSError *error) {
                                    NSLog(@"接口报错");
        }];

//Pro 单次密码
[self.bleDevice getProOfflinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                               pwdType:@"1"
                                              gmtStart:0
                                            gmtExpired:0
                                               pwdName:@"Pro 单次密码"
                                               success:^(id result) {
                                    NSLog(@"接口成功");
        } failure:^(NSError *error) {
                                    NSLog(@"接口报错");
        }];

//Pro 不限次数密码
[self.bleDevice getProOfflinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                               pwdType:@"0"
                                              gmtStart:effectiveTime
                                            gmtExpired:invalidTime
                                               pwdName:@"Pro 不限次数密码"
                                               success:^(id result) {
                                    NSLog(@"接口成功");
        } failure:^(NSError *error) {
                                    NSLog(@"接口报错");
        }];

//Pro 清空码
[self.bleDevice getProOfflinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                               pwdType:@"9"
                                              gmtStart:0
                                            gmtExpired:0
                                               pwdName:@"Pro 清空码"
                                               success:^(id result) {
                                    NSLog(@"接口成功");
        } failure:^(NSError *error) {
                                    NSLog(@"接口报错");
        }];

添加清空码(清空单个)

接口说明

该接口适用低版本公版门锁。

- (void)getSingleRevokeOfflinePasswordWithDevId:(NSString *)devId
                                          pwdId:(NSInteger )pwdId
                                        success:(ThingSuccessID)success
                                        failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
pwdId 密码编号
success 接口成功回调
failure 接口失败回调

接口说明

该接口适用于 Pro 门锁。

- (void)getProSingleRevokeOfflinePasswordWithDevId:(NSString *)devId
                                   unlockBindingId:(NSInteger )unlockBindingId
                                              name:(NSString *)name
                                           success:(ThingSuccessID)success
                                           failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
unlockBindingId 密码的授权编号
name 离线删除密码的名称
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

//低版本公版
[self.bleDevice getSingleRevokeOfflinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                                      pwdId:@"pwdId"
                                                    success:^(id result) {
        if (result && [result isKindOfClass:[NSDictionary class]]){
            NSString *pwdName = [result[@"pwdName"] stringValue];
            NSString *pwdValue = [result[@"pwd"] stringValue];
        }} failure:^(NSError *error) {
                        NSLog(@"接口报错");
    }];

//Pro
[self.bleDevice getProSingleRevokeOfflinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                                   unlockBindingId:[dicValue[@"unlockBindingId"] integerValue]
                                                              name:@"清空码"
                                                           success:^(id result) {
            if (result && [result isKindOfClass:[NSDictionary class]]){
                NSString *pwdName = [result[@"pwdName"] stringValue];
                NSString *pwdValue = [result[@"pwd"] stringValue];
            }
        }failure:^(NSError *error) {
                        NSLog(@"接口报错");
        }];

临时密码参数有效性校验

接口说明

适用低版本公版门锁。

- (void)validateCustomPasswordWithDevId:(NSString *)devId
                                   name:(NSString *)name
                          effectiveTime:(NSInteger)effectiveTime
                            invalidTime:(NSInteger)invalidTime
                               password:(NSString *)password
                               schedule:(ThingSmartBLELockScheduleList *)schedule
                                success:(ThingSuccessID)success
                                failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
name 密码名称
effectiveTime 生效时间
invalidTime 失效时间
password 密码
schedule 周期
success 接口成功回调
failure 接口失败回调

接口说明

该接口适用于 Pro 门锁。

- (void)validateProCustomPasswordWithDevId:(NSString *)devId
                                      name:(NSString *)name
                           unlockBindingId:(NSInteger)unlockBindingId
                             effectiveTime:(NSInteger)effectiveTime
                               invalidTime:(NSInteger)invalidTime
                                  password:(NSString *)password
                                  schedule:(NSString *)schedule
                                   success:(ThingSuccessID)success
                                   failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
name 密码名称
unlockBindingId 临时密码的编号(更新时必传)
effectiveTime 生效时间
invalidTime 失效时间
password 密码
schedule 周期
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

//低版本公版
    ThingSmartBLELockScheduleList *schedule = [[ThingSmartBLELockScheduleList alloc] init];//schedule 需要塞入自己的周期数据
    NSString *scheduleString = [schedule getJsonStringFromScheduleList];
    [self.lockDeviceService validateCustomPasswordWithDevId:devId
                                                       name:name
                                              effectiveTime:effectiveTime
                                                invalidTime:invalidTime
                                                   password:password
                                                   schedule:scheduleString
                                                    success:^(id result) {
                        NSLog(@"验证成功");
    } failure:^(NSError *error) {
                        NSLog(@"接口报错");
        }];

//Pro
    ThingSmartBLELockScheduleList *schedule = [[ThingSmartBLELockScheduleList alloc] init];//schedule 需要塞入自己的周期数据
    NSString *scheduleString = [schedule getJsonStringFromScheduleList];
    [self.lockDeviceService validateProCustomPasswordWithDevId:devId
                                                          name:name
                                               unlockBindingId:0
                                                 effectiveTime:effectiveTime
                                                   invalidTime:invalidTime
                                                      password:password
                                                      schedule:scheduleString
                                                       success:^(id result) {
                        NSLog(@"验证成功");
    } failure:^(NSError *error) {
                        NSLog(@"接口报错");
        }];

添加自定义密码

接口说明

适用低版本公版门锁,自定义密码对应低版本公版的周期密码。

- (void)getCustomOnlinePasswordWithDevId:(NSString *)devId
                                    name:(NSString *)name
                           effectiveTime:(NSInteger)effectiveTime
                             invalidTime:(NSInteger)invalidTime
                                password:(NSString *)password
                                schedule:(ThingSmartBLELockScheduleList *)schedule
                               availTime:(NSInteger)availTime
                                      sn:(NSInteger)sn
                                 success:(ThingSuccessID)success
                                 failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
name 密码名称
effectiveTime 生效时间
invalidTime 失效时间
password 密码
schedule 周期
availTime 可用次数。
  • 0:永久
  • 1:一次性
sn 临时密码编号
success 接口成功回调
failure 接口失败回调

接口说明

该接口适用于 Pro 门锁。

- (void)getProCustomOnlinePasswordWithDevId:(NSString *)devId
                                       name:(NSString *)name
                                   password:(NSString *)password
                              effectiveTime:(NSInteger)effectiveTime
                                invalidTime:(NSInteger)invalidTime
                                  availTime:(NSInteger)availTime
                                         sn:(NSInteger)sn
                                   schedule:(ThingSmartBLELockScheduleList *)schedule
                                    success:(ThingSuccessID)success
                                    failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
name 密码名称
password 密码
effectiveTime 生效时间
invalidTime 失效时间
availTime 可用次数
sn 临时密码编号
schedule 周期
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

        //低版本公版一次性密码
        ThingSmartBLELockScheduleList *listModel = [[ThingSmartBLELockScheduleList alloc] init];
    [self.bleDevice getCustomOnlinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                                         name:name
                                                effectiveTime:effectiveTime
                                                  invalidTime:invalidTime
                                                     password:password
                                                     schedule:listModel
                                                    availTime:1
                                                           sn:0
                                                      success:^(id result) {
                        NSLog(@"创建成功");
            } failure:^(NSError *error) {
                            NSLog(@"创建失败");
            }];

         //低版本公版周期密码
            ThingSmartBLELockScheduleList *listModel = [self.cycleView getScheduleListModel];
            [self.bleDevice getCustomOnlinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                                         name:name
                                                effectiveTime:effectiveTime
                                                  invalidTime:invalidTime
                                                     password:password
                                                     schedule:listModel
                                                    availTime:0
                                                           sn:0
                                                      success:^(id result) {
                        NSLog(@"创建成功");
            } failure:^(NSError *error) {
                                NSLog(@"创建失败");
            }];

//Pro 周期密码
    ThingSmartBLELockScheduleList *listModel = [self.cycleView getScheduleListModel];
            [self.bleDevice getProCustomOnlinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                                           name:name
                                                       password:password
                                                  effectiveTime:effectiveTime
                                                    invalidTime:invalidTime
                                                      availTime:0
                                                             sn:0
                                                       schedule:listModel
                                                        success:^(id result) {
                                NSLog(@"创建成功");
            } failure:^(NSError *error) {
                                NSLog(@"创建失败");
            }];

在线临时密码列表

该接口适用于低版本公版。

接口说明

- (void)getOnlinePasswordListWithDevId:(NSString *)devId
                             availTime:(NSInteger)availTime
                               success:(ThingSuccessID)success
                               failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
availTime 可用次数
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

//低版本公版在线一次性密码列表
[self.bleDevice getOnlinePasswordListWithDevId:self.bleDevice.deviceModel.devId
                                                 availTime:1
                                                   success:^(id result) {
            NSLog(@"查询列表成功");
        } failure:^(NSError *error) {
            NSLog(@"查询列表失败");
        }];
//低版本公版在线周期性密码列表
[self.bleDevice getOnlinePasswordListWithDevId:self.bleDevice.deviceModel.devId
                                                 availTime:0
                                                   success:^(id result) {
            NSLog(@"查询列表成功");
        } failure:^(NSError *error) {
            NSLog(@"查询列表失败");
        }];

离线临时密码列表

该接口适用于低版本公版。

接口说明

- (void)getOfflinePasswordListWithDevId:(NSString *)devId
                                pwdType:(NSString *)pwdType
                                 status:(NSInteger)status
                                 offset:(NSInteger)offset
                                  limit:(NSInteger)limit
                                success:(ThingSuccessID)success
                                failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
pwdType 密码类型
  • 0:多次使用的密码
  • 1:单次使用的密码
  • 8:删除单个的密码
  • 9:清空码
status 密码状态
  • 1:有效
  • 0:无效
offset 页码
limit 记录数,默认 50 条
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

//低版本公版查询离线一次性密码
[self.bleDevice getOfflinePasswordListWithDevId:self.bleDevice.deviceModel.devId
                                                    pwdType:@"1"
                                                     status:1
                                                     offset:0
                                                      limit:20
                                                    success:^(id result) {
            NSLog(@"查询列表成功");
        } failure:^(NSError *error) {
            NSLog(@"查询列表失败");
        }];
//低版本公版查询离线不限次数密码
[self.bleDevice getOfflinePasswordListWithDevId:self.bleDevice.deviceModel.devId
                                                    pwdType:@"0"
                                                     status:1
                                                     offset:0
                                                      limit:20
                                                    success:^(id result) {
            NSLog(@"查询列表成功");
        } failure:^(NSError *error) {
            NSLog(@"查询列表失败");
        }];

//低版本公版查询清空码(所有)列表
[self.bleDevice getOfflinePasswordListWithDevId:self.bleDevice.deviceModel.devId
                                                    pwdType:@"9"
                                                     status:1
                                                     offset:0
                                                      limit:40
                                                    success:^(id result) {
            NSLog(@"查询列表成功");
        } failure:^(NSError *error) {
            NSLog(@"查询列表失败");
        }];

//低版本公版查询清空码(单个)列表
[self.bleDevice getOfflinePasswordListWithDevId:self.bleDevice.deviceModel.devId
                                                    pwdType:@"9"
                                                     status:1
                                                     offset:0
                                                      limit:20
                                                    success:^(id result) {
            NSLog(@"查询列表成功");
        } failure:^(NSError *error) {
            NSLog(@"查询列表失败");
        }];

临时密码列表

该接口适用于 Pro 门锁。

接口说明

- (void)getProPasswordListWithDevId:(NSString *)devId
                          authTypes:(NSArray *)authTypes
                            success:(ThingSuccessID)success
                            failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
authTypes 授权类型
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

//查询在线自定义密码列表
[self.bleDevice getProPasswordListWithDevId:self.bleDevice.deviceModel.devId
                                              authTypes:@[@"LOCK_TEMP_PWD"]
                                                success:^(id result) {
            NSLog(@"查询列表成功");
        } failure:^(NSError *error) {
            NSLog(@"查询列表失败");
        }];
//查询离线限时、一次性、清空码密码列表
[self.bleDevice getProPasswordListWithDevId:self.bleDevice.deviceModel.devId
                                              authTypes:@[@"LOCK_OFFLINE_TEMP_PWD"]
                                                success:^(id result) {
            NSLog(@"查询列表成功");
        } failure:^(NSError *error) {
            NSLog(@"查询列表失败");
        }];

查询可分配的离线不限次数密码列表

查询单个清空码,需要选择的密码列表。

接口说明

- (void)getSingleRevokePasswordListWithDevId:(NSString *)devId
                                     success:(ThingSuccessID)success
                                     failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
success 接口成功回调
failure 接口失败回调

删除在线临时密码

接口说明

该接口适用于低版本公版门锁。

- (void)deleteOnlinePasswordWithDevId:(NSString *)devId
                                pwdId:(NSInteger )pwdId
                                   sn:(NSInteger)sn
                              success:(ThingSuccessID)success
                              failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
productId 产品 ID
pwdId 密码编号
sn 硬件 ID
success 接口成功回调
failure 接口失败回调

接口说明

该接口适用于 Pro 门锁。

- (void)deleteProOnlinePasswordWithDevId:(NSString *)devId
                         unlockBindingId:(NSInteger )unlockBindingId
                                      sn:(NSInteger)sn
                                 success:(ThingSuccessID)success
                                 failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
productId 产品 ID
unlockBindingId 临时密码序号
sn 硬件 ID
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

//低版本公版
[self.bleDevice deleteOnlinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                                    pwdId:pwdId
                                                       sn:sn
                                                  success:^(id result) {
                            NSLog(@"删除成功");
        } failure:^(NSError *error) {
                            NSLog(@"删除失败");
        }];
//Pro
[self.bleDevice deleteProOnlinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                             unlockBindingId:unlockBindingId
                                                          sn:sn
                                                     success:^(id result) {
                            NSLog(@"删除成功");
        } failure:^(NSError *error) {
                            NSLog(@"删除失败");
        }];

修改在线密码的信息(时效)

接口说明

该接口适用于低版本公版门锁。

- (void)updateOnlinePasswordWithDevId:(NSString *)devId
                                 name:(NSString *)name
                             password:(NSString *)password
                                pwdId:(NSInteger )pwdId
                        effectiveTime:(NSInteger)effectiveTime
                          invalidTime:(NSInteger)invalidTime
                             schedule:(ThingSmartBLELockScheduleList *)schedule
                                   sn:(NSInteger)sn
                            availTime:(NSInteger)availTime
                              success:(ThingSuccessID)success
                              failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 产品 ID
name 密码名称
password 密码
pwdId 密码编号
effectiveTime 生效时间
invalidTime 失效时间
schedule 周期
sn 硬件 ID
availTime 可用次数
success 接口成功回调
failure 接口失败回调

接口说明

该接口适用于 Pro 门锁。

- (void)updateProOnlinePasswordWithDevId:(NSString *)devId
                                    name:(NSString *)name
                                password:(NSString *)password
                         unlockBindingId:(NSInteger )unlockBindingId
                           effectiveTime:(NSInteger)effectiveTime
                             invalidTime:(NSInteger)invalidTime
                                   phase:(NSInteger)phase
                                schedule:(ThingSmartBLELockScheduleList *)schedule
                                      sn:(NSInteger)sn
                                 success:(ThingSuccessID)success
                                 failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
productId 产品 ID
name 密码名称
password 密码
unlockBindingId 临时密码序号
effectiveTime 生效时间
invalidTime 失效时间
phase
  • 2:正常
  • 4:冻结
schedule 周期
sn 硬件 ID
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

//低版本公版
ThingSmartBLELockScheduleList *listModel = [[ThingSmartBLELockScheduleList alloc] init];
            [self.bleDevice updateOnlinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                                     name:name
                                                 password:@""
                                                    pwdId:pwdId
                                            effectiveTime:effectiveTime
                                              invalidTime:invalidTime
                                                 schedule:listModel
                                                       sn:sn
                                                availTime:1
                                                  success:^(id result) {
                            NSLog(@"更新成功");
            } failure:^(NSError *error) {
                            NSLog(@"更新失败");
            }];
//Pro
ThingSmartBLELockScheduleList *listModel = [[ThingSmartBLELockScheduleList alloc] init];
            [self.bleDevice updateProOnlinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                                        name:name
                                                    password:@""
                                             unlockBindingId:unlockBindingId
                                               effectiveTime:effectiveTime
                                                 invalidTime:invalidTime
                                                       phase:2
                                                    schedule:listModel
                                                          sn:1
                                                     success:^(id result) {
                            NSLog(@"更新成功");
            } failure:^(NSError *error) {
                            NSLog(@"更新失败");
            }];

非接触式解锁

查询远程开门开关

接口说明

- (void)fetchRemoteUnlockTypeWithDevId:(NSString *)devId
                               success:(nullable ThingSuccessID)success
                               failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

[self.bleDevice fetchRemoteUnlockTypeWithDevId:self.bleDevice.deviceModel.devId
                                           success:^(id result) {
        NSLog(@"查询远程开门开关状态成功 %@", result);
    } failure:^(NSError *error) {
        NSLog(@"查询远程开门开关状态失败 %@", error);
    }];

设置远程开门开关

接口说明

- (void)setRemoteUnlockTypeWithDevId:(NSString *)devId
                             propKvs:(NSString *)propKvs
                             success:(ThingSuccessID)success
                             failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
propKvs 键值对,键(key)为 UNLOCK_PHONE_REMOTE
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

NSString *dataStr = @"{\"UNLOCK_PHONE_REMOTE\":\"true\"}";
if (!value){
    dataStr = @"{\"UNLOCK_PHONE_REMOTE\":\"false\"}";
}
[self.bleDevice setRemoteUnlockTypeWithDevId:self.bleDevice.deviceModel.devId
                                     propKvs:dataStr
                                     success:^(id result) {
    NSLog(@"设置远程开门开关成功 %@", result);
} failure:^(NSError *error) {
    NSLog(@"设置远程开门开关失败 %@", error);
}];

查询谷歌语音密码开关

接口说明

- (void)fetchRemoteVoiceUnlockWithDevId:(NSString *)devId
                                success:(ThingSuccessID)success
                                failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

[self.bleDevice fetchRemoteVoiceUnlockWithDevId:self.bleDevice.deviceModel.devId
                                        success:^(id result) {
      NSLog(@"查询音箱密码开启状态成功 %@", result);
} failure:^(NSError *error) {
      NSLog(@"查询音箱密码开启状态成功 %@", error);
}];

设置谷歌语音密码

接口说明

- (void)setRemoteVoiceUnlockWithDevId:(NSString *)devId
                                 open:(BOOL)open
                                  pwd:(NSString *)pwd
                              success:(ThingSuccessID)success
                              failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
open 开关状态
pwd 密码
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

[self.bleDevice setRemoteVoiceUnlockWithDevId:self.bleDevice.deviceModel.devId
                                             open:YES
                                              pwd:pwd
                                          success:^(id result) {
            NSLog(@"谷歌语音密码设置成功 %@", result);
} failure:^(NSError *error) {
            NSLog(@"谷歌语音密码设置成功 %@", error);
}];

同步数据

同步门锁随机数、配件、记录

App 启动后,设备在线时,执行一次。用于同步离线密码时间、门锁解锁随机数、查询门锁记录等。若未执行,将无法解锁门锁。

接口说明

- (void)publishSyncBatchDataSuccess:(ThingSuccessHandler)success
                            failure:(ThingFailureError)failure;

参数说明

参数 说明
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

[self.bleDevice publishSyncBatchDataSuccess:^{
    NSLog(@"数据下发成功");
} failure:^(NSError *error) {
    NSLog(@"数据下发失败");
}];

查询同步数据内容

该方法是查询 publishSyncBatchData 调用方法的云端数据内容,并未与设备交互。

接口说明

- (void)getSyncBatchDataWithDevId:(NSString *)devId
                          success:(ThingSuccessID)success
                          failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

[self.bleDevice getSyncBatchDataWithDevId:self.devId
                                  success:^(id result) {
    NSLog(@"数据查询成功");
} failure:^(NSError *error) {
    NSLog(@"数据查询失败");
}];

同步解锁方式

接口说明

- (void)syncDataWithDevId:(NSString *)devId
                    dpIds:(NSArray<NSString *> *)dpIds
                  success:(ThingSuccessID)success
                  failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
dpIds 需要同步的解锁方式类型列表,值为一个数组数字
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

  [self.bleDevice syncDataWithDevId:self.bleDevice.deviceModel.devId
                              dpIds:@[@"12",@"13"]
                            success:^(id result) {
        NSLog(@"同步成功");
  } failure:^(NSError *error) {
        NSLog(@"同步失败");
  }];

门锁功能列表

功能名称 功能标识符(dpCode
添加开门方式 unlock_method_create
删除开门方式 unlock_method_delete
修改开门方式 unlock_method_modify
冻结开门方式 unlock_method_freeze
解冻开门方式 unlock_method_enable
蓝牙解锁 bluetooth_unlock
蓝牙解锁反馈 bluetooth_unlock_fb
剩余电量 residual_electricity
电量状态 battery_state
童锁状态 child_lock
上提反锁 anti_lock_outside
指纹解锁 unlock_fingerprint
普通密码解锁 unlock_password
动态密码解锁 unlock_dynamic
卡片解锁 unlock_card
钥匙解锁 unlock_key
开关门事件 open_close
从门内侧打开门锁 open_inside
蓝牙解锁记录 unlock_ble
门被打开 door_opened
告警 alarm_lock
劫持报警 hijack
门铃呼叫 doorbell
短信通知 message
门铃选择 doorbell_song
门铃音量 doorbell_volume
门锁语言切换 language
显示屏欢迎词管理 welcome_words
按键音量 key_tone
门锁本地导航音量 beep_volume
反锁状态 reverse_lock
自动落锁开关 automatic_lock
单一解锁与组合解锁切换 unlock_switch
同步成员开门方式 synch_member
自动落锁延时设置 auto_lock_time
定时自动落锁 auto_lock_timer
指纹录入次数 finger_input_times
人脸识别解锁 unlock_face
开合状态 closed_opened
虹膜解锁 unlock_eye
掌纹解锁 unlock_hand
指静脉解锁 unlock_finger_vein
硬件时钟 RTC rtc_lock
自动落锁倒计时上报 auto_lock_countdown
手动落锁 manual_lock
落锁状态 lock_motor_state
锁帖电机转动方向 lock_motor_direction
冻结用户 unlock_user_freeze
解冻用户 unlock_user_enable
蓝牙锁临时密码添加 temporary password_creat
蓝牙锁临时密码删除 temporary password_delete
蓝牙锁临时密码修改 temporary password_modify
同步开门方式(数据量大) synch_method
临时密码解锁 unlock_temporary
电机扭力 motor_torque
组合开锁记录 unlock_double
离家布防开关 arming_mode
配置新免密远程解锁 remote_no_pd_setkey
新免密远程开门(带密钥) remote_no_dp_key
远程手机解锁上报 unlock_phone_remote
远程语音解锁上报 unlock_voice_remote
离线密码 T0 时间下发 password_offline_time
单条离线密码清空上报 unlock_offline_clear_single
离线密码清空上报 unlock_offline_clear
离线密码解锁上报 unlock_offline_pd