迪格立之
迪格立之
  • 发布:2020-11-19 23:46
  • 更新:2023-03-28 15:08
  • 阅读:954

【报Bug】锁屏10s后uni.onBeaconUpdate就收不到ibeacon了

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 2.9.10

手机系统: Android

手机系统版本号: Android 8.1

手机厂商: vivo

手机机型: y81s

页面类型: vue

打包方式: 离线

项目创建方式: HBuilderX

操作步骤:
  1. startBeaconDiscovery
  2. onBeaconUpdate
  3. 观察20s收到的ibeacon
  4. 关掉手机屏幕
  5. 观察10分钟收到的ibeacon
  6. 观察10s周期的startBeaconDiscovery和getBeacons
  7. 观察onBeaconServiceChange

预期结果:

步骤5中持续收到ibeacon,或者步骤6可以startBeaconDiscovery成功,或者步骤7能给出service change。

实际结果:

步骤5只持续10s收到ibeacon
步骤6一直返回11003 already start
步骤7没有任何service change报告

bug描述:

                uni.startBeaconDiscovery({  
                    uuids: [device.uuid],  
                    success(res) {  
                        uni.onBeaconUpdate(data=>{  
                            console.log('onBeaconUpdate')  
                        })  
                        uni.onBeaconServiceChange(options=>{  
                            console.log('onBeaconServiceChange, options[available]='  
                                                                            + options.available + ', options[discovering]=' + options.discovering)  
                        })  
                    }  
                })

打开app,使其运行上面这段代码,console.log('onBeaconUpdate')正常,锁屏后,这条log在10s内还能正常显示,可以得到beacon信息。

锁屏10s后,下面代码中console.log('onHide res=', JSON.stringify(res))会得到“11003 already start 已经开始搜索”,并且下面代码中console.log('onHide beacons=', JSON.stringify(beacons))的beacons信息为空。

下面代码也会10s周期性的执行,上面代码中console.log('onBeaconServiceChange‘)这条log一直没有输出。

        onHide: function(option) {  
            let that = this  
            setInterval(()=>{  
                uni.startBeaconDiscovery({  
                                        uuids: [that.uuid],  
                    complete(res) {  
                        console.log('onHide res=', JSON.stringify(res))  
                    }  
                })  
                                uni.getBeacons({  
                    complete(beacons) {  
                        console.log('onHide beacons=', JSON.stringify(beacons))  
                    }  
                 })  
            }, 10000)

这个测试结果说明,

  1. app在锁屏后一直在后台运行,没有被kill;
  2. beacon discovery也在运行态,没有被kill;
  3. onBeaconServiceChange也没有检测到状态变化。
    一切状态都表明软件工作正常,却没有ibeacon上来,so问题在哪里呢?是蓝牙硬件进入休眠了,SDK没有检测到?还是平台kill了SDK service,结果却没有反馈到app?
2020-11-19 23:46 负责人:DCloud_App_Array 分享
已邀请:
Lithrteen

Lithrteen

请问问题解决了吗

  • 2***@qq.com

    大佬有解决问题吗

    2023-03-27 15:01

2***@qq.com

2***@qq.com

大佬,问题又解决吗,我同样问题息屏getbeacon获取是空的,

1***@qq.com

1***@qq.com

大佬,问题有解决吗?我也是同样息屏后获取的数据是空的

  • 2***@qq.com

    哥们,问题大概是安卓8以后息屏会低功耗蓝牙搜索会被禁掉,但是我不会开发插件,哈哈哈,你如果解决了麻烦帮我一下

    2023-04-03 16:33

  • 1***@qq.com

    回复 2***@qq.com: 哈哈哈我也不会开发插件,我也想有善心人士

    2023-04-04 15:22

  • 1***@qq.com

    回复 2***@qq.com: 虽然我弄不到蓝牙这个插件,但我想到一个方法,每10秒推送一个消息,让手机亮屏

    2023-04-06 14:26

要回复问题请先登录注册