MiEcosystem / ios-rn-sdk

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

两次调用loginXiaoMiBLE获得的数据不一致,导致connectDefaultDevice报404。(偶现) #133

Closed gaopingfly closed 5 years ago

gaopingfly commented 5 years ago

Bug Report

实际现象

两次调用loginXiaoMiBLE获得的数据不一致,导致connectDefaultDevice报404。

期望表现

数据一致

环境

复现步骤

  1. 进入扩展程序,先通过loginXiaoMiBLE进行登录,通过 getDefaultDevice获得默认设备最新信息,再通过connectDefaultDevice对设备进行连接,链接成功后,进行蓝牙交互
  2. 退出扩展程序,在退出前,点击“返回按钮”,调用disconnectXiaoMiBLE断开链接
  3. 再次进入扩展程序,通过loginXiaoMiBLE进行登录,通过connectDefaultDevice对设备进行链接。失败后有调用disconnectXiaoMiBLE断开链接。

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

根据日志分析,最后一次连接正常发生在2018/12/09 22:24:43:833到2018/12/09 22:25:09:539。 该时间内,发生了进入扩展程序、连接、蓝牙通讯、断开连接、退出扩展程序的过程。

之后,发生于2018/12/09 22:25:26:032的连接失败

两次loginXiaoMiBLE获得的值不一致,

app日志中提示“2018/12/09 22:25:31:066 [[BTControl]]:-[MHXiaoMiBleSecureLoginFiniteStateMachine generalCallback:fromState:toState:] CurrentState 0 to State 18,Error code:5”。

扩展程序日志connectDefaultDevice返回错误码404

app_log.txt

plugin_log.txt

尝试过的解决办法

之前出现404是因为将disconnectXiaoMiBLE放在componentWillUnmount,这个已经修复,但目前依然存在这个问题。

Copypeng commented 5 years ago

loginXiaomiBLE,就是建立蓝牙连接,并做了一系列小米蓝牙协议的数据认证。为啥还要连接。

gaopingfly commented 5 years ago

对不起,这个日志比较老旧,我们采用新版本日志后再提问。打搅了。

gaopingfly commented 5 years ago

loginXiaomiBLE,就是建立蓝牙连接,并做了一系列小米蓝牙协议的数据认证。为啥还要连接。

麻烦问一下,每当小米报 [[BTControl]]:-[MHXiaoMiBleSecureLoginFiniteStateMachine generalCallback:fromState:toState:] CurrentState 0 to State 18,Error code:5 毕现扩展程序连接不上,loginXiaomiBLE接口的errorCode=404

我们之前也有遇到过“CurrentState 1 to State 18,Error code:5”的问题

请问这里的 “CurrentState 0” ,“CurrentState 1”,“State 18” 和 “Error code 5”分别代表什么?