之前没有问题,ios升级到16.4.1级以上版本后,低功耗蓝牙名称获取不到。打开随便一个蓝牙调试助手后,则马上能获取到蓝牙名称,关闭蓝牙调试助手后就又搜索不到了。 只有部分苹果手机能复现,目前发现iphone11可以稳定复现
- 发布:2023-05-23 10:45
- 更新:2023-06-07 12:00
- 阅读:448
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Windows 11 专业版 21H2
HBuilderX类型: 正式
HBuilderX版本号: 3.8.2
手机系统: iOS
手机系统版本号: iOS 16
手机厂商: 苹果
手机机型: iphone11
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
操作步骤:
预期结果:
可以搜索到蓝牙名称
可以搜索到蓝牙名称
实际结果:
搜索不到蓝牙名称
搜索不到蓝牙名称
bug描述:
之前没有问题,ios升级到16.4.1级以上版本后,低功耗蓝牙名称获取不到。打开随便一个蓝牙调试助手后,则马上能获取到蓝牙名称,关闭蓝牙调试助手后就又搜索不到了。 只有部分苹果手机能复现,目前发现iphone11可以稳定复现
uni.onBluetoothDeviceFound(devices => {
//监听寻找到新设备的事件
var re = JSON.parse(JSON.stringify(devices))
console.log(`re.devices.length:${re.devices.length}`)
let name = re.devices[0].localName
let deviceId = re.devices[0].deviceId
console.log(`发现新设备:name:${name} deviceId:${deviceId} localname:${re.devices[0].localName}`)
const index = this.devices.findIndex(v => v.deviceId === deviceId)
if (index < 0 && name && (name.toLowerCase().startsWith('hn_') || name.toLowerCase().startsWith('ep_'))) {
deviceId = re.devices[0].deviceId
this.devices.push({
name: name || re.devices[0].deviceId,
deviceId: deviceId,
services: []
})
}
})
l***@163.com (作者)
是的,之前都测试过,没有问题。
2023-05-27 15:55
DCloud_iOS_WZT
回复 l***@163.com: startBluetoothDevicesDiscovery 在这个方法里 加个 allowDuplicatesKey: true 试下
2023-05-27 18:17
l***@163.com (作者)
回复 DCloud_iOS_WZT: 大佬,试了一下,加了allowDuplicatesKey: true 也没有用
2023-06-06 10:57
DCloud_iOS_WZT
回复 l***@163.com: 所有的都没有name吗?
2023-06-06 11:04
l***@163.com (作者)
回复 DCloud_iOS_WZT: 部分。。。有的蓝牙有name。有的没有,但是ios升版本前,试的蓝牙都有name
2023-06-07 08:42
DCloud_iOS_WZT
回复 l***@163.com: 大多数都是没有name的哈 你用两台不同的设备测试 一台有name一台没有么?
2023-06-07 12:03
l***@163.com (作者)
回复 DCloud_iOS_WZT: 是这样的,有俩厂家的蓝牙模块,ios更新系统之前都能取到name。更新系统之后,有个厂家的蓝牙的name就都取不到了,但是用手机的蓝牙调试工具就都能搜到name.并且蓝牙调试工具搜索后,之前uni搜不到name的蓝牙模块也能搜到name了。把蓝牙调试助手进程杀掉后,uni就又搜不到name了。很奇怪。
2023-06-08 09:27
DCloud_iOS_WZT
回复 l***@163.com: 你代码里这边重复搜索的deviceId 数据会覆盖之前的吗
2023-06-08 11:16