jianyu123
jianyu123
  • 发布:2022-07-26 09:30
  • 更新:2024-09-10 16:39
  • 阅读:1637

IOS蓝牙新设备第一次uni.onBluetoothDeviceFound搜索不到,需要第二次调用才能搜索到设备

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: windows10 专业版

HBuilderX类型: 正式

HBuilderX版本号: 3.3.11

手机系统: iOS

手机系统版本号: iOS 15

手机厂商: 苹果

手机机型: ios全部

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
<script>  
    export default {  
        data() {  
            return {  
                title: 'Hello'  
            }  
        },  
        onLoad() {  

        },  
        onReady() {  
            uni.openBluetoothAdapter({  
              success(res) {  
                uni.startBluetoothDevicesDiscovery({  
                    success: e => {  
                        uni.onBluetoothDeviceFound(devices => {  
                        if (devices.devices[0].name == 'bleconfig'|| devices.devices[0].localName == 'bleconfig') {  
                                console.log(devices.devices[0]);  
                                uni.stopBluetoothDevicesDiscovery({  
                                    success: e => {  
                                        console.log('停止搜索蓝牙设备:' + e.errMsg);  
                                    },  
                                    fail: e => {  
                                        console.log('停止搜索蓝牙设备失败,错误码:' + e.errCode);  
                                        if (e.errCode !== 0) {  
                                            this.initTypes(e.errCode);  
                                        }  
                                    }  
                                });  
                            }  
                        });  

                        this.step = 'search';  
                    },  
                    fail: e => {  
                        console.log('搜索蓝牙设备失败,错误码:' + e.errCode);  
                        if (e.errCode !== 0) {  
                            this.initTypes(e.errCode);  
                        }  
                    }  
                });  
              }  
            })  
        },  
        methods: {  

        }  
    }  
</script>  

操作步骤:

一个全新设备开始蓝牙模式,app蓝牙搜索uni.onBluetoothDeviceFound监听返回值,手机第一次监听不到该蓝牙设备,重新uni.onBluetoothDeviceFound监听能快速监听到设备,之后该设备每次都能正常监听到。

预期结果:

一个全新设备开始蓝牙模式,app蓝牙搜索uni.onBluetoothDeviceFound监听返回值,手机第一次监听到该蓝牙设备

实际结果:

手机第一次监听不到该蓝牙设备,重新uni.onBluetoothDeviceFound监听能快速监听到设备,之后该设备每次都能正常监听到。

bug描述:

iOSapp蓝牙搜索一个新设备,第一次使用uni.onBluetoothDeviceFound监听不到设备,需要第二次使用uni.startBluetoothDevicesDiscovery+uni.onBluetoothDeviceFound才能监听到设备,之后该设备能正常监听到

2022-07-26 09:30 负责人:DCloud_iOS_WZT 分享
已邀请:
DCloud_iOS_WZT

DCloud_iOS_WZT

下载最新的HBuilderX试下

  • jianyu123 (作者)

    还是一样HX更新到了3.4.18.还是第一次搜不到,需要第二次才能监听到

    2022-07-26 16:44

  • DCloud_iOS_WZT

    回复 jianyu123: 你这个写的有问题吧,首次搜索完才添加新设备监听,那么首次肯定没有啊。你得先添加监听再搜索设备

    2022-07-28 15:05

  • jianyu123 (作者)

    已修改监听在搜索之前,但问题依旧存在

    2022-07-29 15:14

  • jianyu123 (作者)

    一个设备对应手机只有第一次搜索时监听不到,与app卸载重装无关

    2022-07-29 15:15

  • DCloud_iOS_WZT

    回复 jianyu123: onBluetoothDeviceFound 的回调 只有在 startBluetoothDevicesDiscovery 搜索到新设备的时候才会执行 为啥要把start写到deviceFound的回调里面?

    2022-07-29 15:23

  • DCloud_iOS_WZT

    你把这几个方法 分开写 先调用onBluetoothDeviceFound 然后再调用startBluetoothDevicesDiscovery start搜索到新设备 onBluetoothDeviceFound 里面会有回调

    2022-07-29 15:24

  • DCloud_iOS_WZT

    回复 jianyu123: 你可以直接用 hello uni app 项目测试下蓝牙 可以看一下示例项目怎么用的

    2022-07-29 18:30

DCloud_iOS_WZT

DCloud_iOS_WZT

这边还有问题吗

  • jianyu123 (作者)

    有的,用了demo蓝牙模块也还是一样,手机第一次蓝牙搜索就是监听不到,第二次搜索能正常监听到,之后就正常了,我可以给你录制视频。

    2022-08-04 15:06

  • jianyu123 (作者)

    最近忙别的去了,不好意思哈·

    2022-08-04 15:06

  • jianyu123 (作者)

    并且,在获取设备列表里面可以找到对应设备

    2022-08-04 15:07

  • DCloud_iOS_WZT

    回复 jianyu123: 别录视频 写个示例 发出来

    2022-08-04 15:17

jianyu123

jianyu123 (作者) - 王建宇

用的就是hello uniapp,修改了onBluetoothDeviceFound函数

  • DCloud_iOS_WZT

    不要直接发代码,附件提交示例工程

    2022-08-04 17:14

jianyu123

jianyu123 (作者) - 王建宇

麻烦帮忙看下,谢谢你

  • DCloud_iOS_WZT

    你提供的示例 我这边运行不起来 没有common文件夹 还有我用hello Uni 示例项目没复现问题 首次就能搜索到几百个周边的蓝牙设备

    2022-08-05 11:21

  • DCloud_iOS_WZT

    我看你的示例 你是搜一下就关闭了? 开始搜索是一个持续的过程 搜索设备是要时间的 你搜一下直接关了 肯定有些设备没搜到

    2022-08-05 11:29

  • DCloud_iOS_WZT

    你开始搜索多开一会就搜到了,蓝牙的搜索不是你这么用的

    2022-08-05 11:30

  • jianyu123 (作者)

    回复 DCloud_iOS_WZT: 能搜索到设备,但就是一个全新的设备,用一部手机第一次去搜索这个设备的蓝牙,在onBluetoothDeviceFound函数里面监听不到,二次搜索和之后的每次搜索都能正常监听到。

    2022-08-09 17:33

  • jianyu123 (作者)

    但在获取蓝牙设备列表里,可以找到这个设备

    2022-08-09 17:35

  • DCloud_iOS_WZT

    回复 jianyu123: 发个视频演示一下

    2022-08-09 17:45

jianyu123

jianyu123 (作者) - 王建宇

!我打开设备蓝牙模式,然后app开启蓝牙搜索,一直搜不到该设备,当我关闭搜索,重新开启搜索后,才能搜索到设备,并终止搜索

jianyu123

jianyu123 (作者) - 王建宇

麻烦确认一下吧,辛苦小哥哥。这个问题是必现的。导致用户购买我们公司产品后,去蓝牙配网,搜不到设备。第一次配网就会失败

jianyu123

jianyu123 (作者) - 王建宇

这是完整demo代码和另一个设备的
!我打开设备蓝牙模式,然后app开启蓝牙搜索,一直搜不到该设备,当我关闭搜索,重新开启搜索后,才能搜索到设备,并终止搜索视频

3***@qq.com

3***@qq.com

解决了吗

1***@qq.com

1***@qq.com

我这边也有这个问题:一个全新的低功耗蓝牙设备,通过其他蓝牙调试工具能搜索到,uni.onBluetoothDeviceFound中不反回,当我用其他蓝牙调试工具连接过这个全新的设备以后,再次通过uni.onBluetoothDeviceFound就能拿到了;

要回复问题请先登录注册