MiEcosystem / ios-rn-sdk

Works with mijia
https://iot.mi.com
116 stars 41 forks source link

toggleLockXiaoMiBLE---error "code":4 蓝牙断开连接 #140

Closed RideShi closed 5 years ago

RideShi commented 5 years ago

Bug Report

实际现象

简单明了地描述一下实际的现象。

进入插件后,点击开锁,MHXiaomiBLE.toggleLockXiaoMiBLE方法,callback返回 error------{"message":"timeout","code":4},蓝牙断开连接(偶现),

使用密码或者指纹开锁,然后调用MHXiaomiBLE.toggleLockXiaoMiBLE方法,callback返回 error------{"message":"timeout","code":4},蓝牙断开连接 (必现) 期望表现 当锁端处于忙碌状态,接口返回超时,蓝牙不断开连接,只是开锁失败

环境

复现步骤 方法一: 1.进入插件,等待连接成功

  1. 连接成功后立刻点击开锁 3.MHXiaomiBLE.toggleLockXiaoMiBLE方法,callback返回 error------{"message":"timeout","code":4},蓝牙断开连接 (偶现)

方法二: 1.进入插件,等待连接成功

  1. 使用密码或者指纹开锁,在锁端反锁倒计时结束前点击开锁 3.MHXiaomiBLE.toggleLockXiaoMiBLE方法,callback返回 error------{"message":"timeout","code":4},蓝牙断开连接 (必现)

其他的上下文/日志/截图

提供更多的上下文,有日志或者截图更好。 image

尝试过的解决办法

进入插件后,点击开锁失败问题:尝试过将可点击开锁事件在与锁端后台处理事件结束后打开,会减少蓝牙断开概率

RideShi commented 5 years ago

toggleLockXiaoMiBLE---error------{"message":"busy","code":1} MainPage.js:611 toggleLockXiaoMiBLE---error------{"message":"timeout","code":4}

Copypeng commented 5 years ago

该情况正常。锁设备按安全协议实现,设备如果未及时回复开关锁信息,连接会断开。

RideShi commented 5 years ago

这种情况可以更改么,想要只返回失败超时,而不断开蓝牙连接这种

Copypeng commented 5 years ago

不能的,防止中间人攻击设计的。设备开关锁操作之后,及时回复即可。如果出错导致断开,客户端须再发起连接请求。

RideShi commented 5 years ago

嗯, 我试了一下,你们是如果收不到回复,根据开锁接口MHXiaomiBLE.toggleLockXiaoMiBLE(0, 12.0, (error, result) => 设置的超时时间去断开蓝牙连接么