l***@163.com
l***@163.com
  • 发布:2023-05-23 10:45
  • 更新:2023-06-07 12:00
  • 阅读:448

【报Bug】iphone11 ios 16.4.1版本以上 低功耗蓝牙名获取不到

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 11 专业版 21H2

HBuilderX类型: 正式

HBuilderX版本号: 3.8.2

手机系统: iOS

手机系统版本号: iOS 16

手机厂商: 苹果

手机机型: iphone11

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

之前没有问题,ios升级到16.4.1级以上版本后,低功耗蓝牙名称获取不到。打开随便一个蓝牙调试助手后,则马上能获取到蓝牙名称,关闭蓝牙调试助手后就又搜索不到了。 只有部分苹果手机能复现,目前发现iphone11可以稳定复现

预期结果:

可以搜索到蓝牙名称

实际结果:

搜索不到蓝牙名称

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: []  
                    })  
                }  
            })
2023-05-23 10:45 负责人:DCloud_iOS_WZT 分享
已邀请:
DCloud_iOS_WZT

DCloud_iOS_WZT

只有16.4.1以上的系统才能复现吗? 之前的都没问题是吗

  • 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

SGUAI小水怪

SGUAI小水怪

同样的问题,何时解决??

要回复问题请先登录注册