iOS 11 ibeacon扫描问题
发布于 6 年前 作者 na74 3273 次浏览 来自 问答

iOS11 蓝牙从通知中心中看有以下3种状态

  1. 蓝牙硬件关闭,无法进行蓝牙扫描,及ibeacon扫描。

  2. 蓝牙硬件开启,无法进行蓝牙扫描,但是可以进行ibeacon扫描。

  3. 蓝牙硬件开启,可以进行蓝牙扫描,及ibeacon扫描。

以下两个操作可以发现该bug

  • 以蓝牙3状态进去小程序扫描,startBeaconDiscovery函数 ibeacon一直能扫描到并返回数据。此时切换到蓝牙2状态,ibeacon依旧能扫描到数据

  • 以蓝牙2状态进去小程序扫描startBeaconDiscovery返回错误码11000,iOS原生代码实际上是能够扫描到ibeacon,只是此时程序上获取到的蓝牙状态是关闭着的,所以可能startBeaconDiscovery函数执行时判断蓝牙状态是关闭着就直接返回错误信息了。


请维持iOS代码原生效果,让小程序从蓝牙2状态开启,也能正常扫描到ibeacon。


2 回复

你好,感谢反馈,这个问题我们下个版本修复一下


08-23更新:

微信版本6.7.2,startBeaconDiscovery接口新增ignoreBluetoothAvailable参数,表示是否校验蓝牙开关,楼主可以尝试一下

楼主你好,有个问题需要和你讨论一下,你反馈的问题是 iOS11 引入的新特性,用户在控制中心关闭蓝牙不会真正关闭手机的蓝牙功能,系统的 airDrop、定位等功能仍然有效,因此 iBeacon 功能仍能使用。

但是从程序上来看,不管是 情况1 或者 情况2, 微信端获取到的蓝牙状态均为 CBManagerStatePoweredOff,无法真正区分这两种情况。

那从开发者角度来看,是否接受小程序beacon模块不关心蓝牙状态直接开始监听周边 beacon 呢,不在蓝牙状态为CBManagerStatePoweredOff返回失败?

或者你这边有没有更好的解决方案呢?

回到顶部