蓝牙问题 苹果手机 wx.getBluetoothAdapterState
发布于 5 年前 作者 lizeng 9008 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

苹果手机的蓝牙开着,但wx.getBluetoothAdapterState返回值res.available为false

苹果手机蓝牙的状态是开着的,但是wx.getBluetoothAdapterState调用成功后返回的res.available的值为false,

这种bug 是在苹果手机蓝牙开着但长久不用的状态里出现,一般这种时候关闭重启蓝牙,就可以获取到正确的值。

但是并不清楚蓝牙明明开着,为什么获取本机蓝牙适配器的状态为false

  • 预期表现

在苹果手机蓝牙开着的状态下,wx.getBluetoothAdapterState调用成功后返回的res.available的值为true

  • 复现路径
  • 提供一个最简复现 Demo

这个与代码无关,就是苹果手机蓝牙开着但长久不用的情况下 API调用成功的返回值很迷

2 回复

这个看样子还是没有解决,2019年11月了。 我在iOS 12.4 的设备是, 重复的去获取蓝牙适配器状态。在蓝牙开启的情况下,获取到适配器不可用的几率大概是1/3 。

在 iOS 上底层确实没有直接获取蓝牙适配器状态的Api ,在原生的iOS开发中,都是依赖通过蓝牙适配器状态变化来确定的。

所以这边我处理方式是在Data中放一个值 默认是null ,第一次去依赖  getBluetoothAdapterState 去获取蓝牙状态,然后在OnLoad 时添加 OnBluetoothAdapterStateChange 的监听且后续依赖它去获取蓝牙适配器状态

这和是不是智能机没关系,主要是看手机蓝牙版本与蓝牙耳机是否匹配

回到顶部