ios-rn-sdk
ios-rn-sdk copied to clipboard
与米家插件蓝牙连接成功后,返回米家主界面,反复连接蓝牙出现连接失败
Bug Report
实际现象
复现步骤:
【前提条件】:
设备绑定未连接
【操作步骤】:
米家->点击对讲机图标连接
场景1:退出,等待对讲机端蓝牙断开,再重新连接,反复操作
场景2:退出,对讲机端蓝牙未断开,再重新进入连接,反复操作
【实际结果】:
蓝牙无法连接 ,【复现概率10%左右】
【期望结果】:
连接正常
测试手机:iphone6s
详情点击连接查看:http://note.youdao.com/noteshare?id=65b096f2bd59e26c789ab71d38f793b2
抱歉没及时回复。 我们已找人在看这个问题,稍候回复,请稍候。
根据你的描述我们这边没法定位到确切的信息,希望你可以提供以下信息,便于我们定位问题:
- 手机系统版本
- 操作过程中手机端的console日志输出
- 操作过程中无法连接蓝牙的js端的日志输出
- 固件端的日志输出
请问出问题的对讲机是哪款?1 or 1S or 2 ?
1.手机系统版本 iOS 10.2.1 2.APP 米家V4.13.0 3. 固件端日志参考链接内容 http://note.youdao.com/noteshare?id=65b096f2bd59e26c789ab71d38f793b2 4.js端无有用信息输出 5.出问题的是米家对讲机2
- 能找个iOS12的iphone试试吗?排除下系统的问题
- JS端代码加些debug log呗,比如蓝牙连接/断连的回复,出错信息,native module的接口调用回复等
1.在其他手机iPhoneX,iOS12.1.4 ,App米家V4.13.0 测试此问题未复现 2. 复现此问题时,JS端调用MHBluetooth.scanAndConnectForSeconds,回调返回error.code = 404
蓝牙连接失败,我们怀疑是上次退出插件时蓝牙没断开 请试试此文档中的建议:https://github.com/MiEcosystem/ios-rn-sdk/issues/27
error.code = 404 这个错误出现表示在指定时间中未能找到指定设备,出现情况一般为设备不在周边或者设备已经被连接。 可以的话检查下是否是退出时的蓝牙断开接口未执行,还是执行了但是断开连接有延迟。 断开蓝牙方式可以看下 #27 。
执行了断开操作有延时,有5s左右延时,在其他手机上没有延时
那你就“成功断开了蓝牙连接”才退出插件呢。
这样的话副作用顶多是退出插件会慢一点
你这种方案会影响产品效果,不太能接受,还是希望你们能做机型适配。这种方式不是慢一点点,点了返回按钮5s多没有任何反应
@CGseng 米家提供的解决方案:“成功断开了蓝牙连接,再退出插件”本身没问题,问题在于:断开的慢
,如果正常断开的话,是很快的,那你调完断开马上退出插件也没问题。
断开慢的原因是 没有正确的去断开设备,米家提供的是API的基本能力,如果直接调用断开,大概率是不能及时断开的。
我的经验里有两个方案适合你:
方案一:需要先关闭写使能,再调用断开,就可以了。
方案二:发命令给设备,让设备执行断开。
当然前提是,米家提供的API的基本能力没Bug。Native里两个方案都没问题。
我们内部整个demo试了下,频繁的连接/断开 蓝牙(没发送数据),没出现断连延时的问题。
所以请您试下:
- 暂时关掉插件中蓝牙数据读写操作,看是否还出现此问题。
- 试下iHealthBaolei提供的“方案一”试下。(感谢iHealthBaolei)
我这边在断开蓝牙操作前,根据我的log确认未进行读写数据操作。还有一个关键点是你们测试的手机是否是iOS10.2.1 的iPhone6s ,因为目前我只在这个手机上能复现这个问题。
你还是试下“1. 暂时关掉插件中蓝牙数据读写操作,看是否还出现此问题。” 目前没什么头绪的情况下,只能靠排除法先分析了
因为我们这边试过:只是频繁连接/断连蓝牙,不发送数据,是不会出现此问题的
我这边已经尝试了只有连接断开进行蓝牙数据读写,连接上之后注释了其他蓝牙操作,断开蓝牙依然会有延时,延时也并未有任何好转,所以请确定你们测试环境和我们的是否一致