正常情况,
- 蓝牙是开启 -> 没有问题发生
- 当蓝牙关闭 -> 没有问题发生
- 当蓝牙关闭再开启 -> Failed detect {errCode: 11005, errMsg: "startBeaconDiscovery:fail"}
wx.startBeaconDiscovery 这个API 会得到 11005 这个错误码
https://developers.weixin.qq.com/miniprogram/en/dev/api/iBeacon.html#wxonbeaconservicechangecallback
官方文档没有提供任何此错误码信息
手机:ONEPLUS A5000
谷歌百度没能找到有用信息
这个错误是调用系统蓝牙接口导致的,因为一般不太可能走到,所以没有在文档里暴露。
这里这个问题是必现么?小程序的逻辑是怎么样的?可以提供个复现问题的代码路径么。
-------
ps:我这边看了客户端代码,比较有可能是开发者做监听蓝牙状态变化时立即调用搜索接口,这个有可能导致搜索不到,系统此时蓝牙出于开启中,我们小程序做个优化,看能不能改善这个情况,你这边也麻烦加个延时再试试。thx
目前问题已解决
改变如下:
升级Android (不确定因素)
BeaconService方面
- setTimeout from 500ms to 50ms to 500ms 每当 stopBeaconDiscovery
(不大确定为何增加等待停用时间可以)
- setTimeout from 2000ms to 1000ms 每当 startBeaconDiscovery
(不大确定为何减少等待开启时间反而可以)
BluetoothService方面
增加了变量开关(boolean),已确保进入socpe前只执行一次
感谢你的回复及帮助
期待可以从api本身去优化这情形
谢谢!!
(今天live 库似乎升到了2.2.2)
我试着在 开启蓝牙后 wx.startBeaconDiscovery 时先等待十秒
结果是相同的 => fail 11005
倒是试着监听 wx.onBeaconServiceChange(CALLBACK)
写个 console.warn(''### onBeaconServiceChange", res)
会同时触发2次
然后换
iphone6 plus
wechat: 6.7.1
base lib: 2.2.2
触发一次
不会发生 11005
另一只手机
huawei nexus 6p
wechat: 6.6.7
base lib: 2.2.2
触发2次
不会发生 11005