收藏
回答

小程序获取ibeacon信息重复调用

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug wx.onBeaconUpdate(function callback) 工具 7 2.6.4

调用wx.getBeacons接口成功后执行两遍







最后一次编辑于  03-26
回答关注问题邀请回答
收藏

2 个回答

  • 社区技术运营专员-灵芝
    社区技术运营专员-灵芝
    03-26

    麻烦提供能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    03-26
    赞同
    回复 1
    • Solitary Man
      Solitary Man
      03-26

      直接提供的代码片段无法复现,因为代码里面的uuid是我这边ibeacon设备的。而且必须获取到设备后才会输出,而直接提供的代码没有可获取的设备。


      03-26
      回复
  • 王翊夫if
    王翊夫if
    03-26

    你如果再等等还会发现不只回调两次……

    系统是会是会不断将目标 beacon 的信号回调给小程序的,因此你调用 startBeaconDiscovery 后,只要监听 wx.onBeaconUpdate(function(res){})  的结果就好了,只要手机能一直接收到 beacon 的信号,那这个函数会不停地被回调到,一般是1秒1次。

    一般是无需调用 wx.getBeacons 的,除非你想主动获取历史找到的 beacon 信息。


    03-26
    赞同
    回复 4
    • Solitary Man
      Solitary Man
      03-27

      明白了,谢谢解答。wx.onBeaconUpdate这个接口确实是在不停的回调,但是我在回调里写了stopBeaconDiscovery ,我觉得他会在第一次执行完就会停止扫描,但是执行了两次。通过反复测试发现,就算第一次停止了,onBeaconUpdate也会执行多次,次数跟搜索到的ibeacon设备个数一样,因为每次onBeaconUpdate回调会返回一个包含ibeacon设备信息的数组。


      所以目前问题解决了,本人拙见, 在想是不是直接执行一次回调,然后每次回调里面的数组里存上当前所有获取到的设备。

      03-27
      回复
    • 扬帆起航
      扬帆起航
      08-14
      想问一下,我如果设置了ibecon发射周期为100ms,可以设置onBeaconUpdate的回调周期,让它达到我想要的100ms返回一次蓝牙信息吗
      08-14
      回复
    • 王翊夫if
      王翊夫if
      08-16回复扬帆起航
      不行,iOS 回调频率由系统决定,安卓固定是 500ms 回调一次
      08-16
      回复
    • 扬帆起航
      扬帆起航
      08-18回复王翊夫if
      好的谢谢,另外有个问题,我现在接收onbeaconupdate数据时,每隔20s会有5s接收不到数据,想问一下可能是什么原因
      08-18
      回复