收藏
回答

Android与IOS小程序接受ibeacon广播数据不一致?

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug onBeaconUpdate 工具 Android版本7.7.1 微信版本 6.6.7 ; ios版本10.3.3 微信版本 6.7.3 2.3.0
uuids: ["E2C56DB5-DFFB-48D2-B060-D0F5A71096E0", "E2C56DB5-DFFB-48D2-B060-D0F5A71096E1", "E2C56DB5-DFFB-48D2-B060-D0F5A71096E2", "E2C56DB5-DFFB-48D2-B060-D0F5A71096E3"],
          success: function (res) {
            console.log(res.errMsg);
            wx.onBeaconUpdate(function (res) {//监听 iBeacon 设备的更新事件 
              //console.info(res.beacons.length);
              //封装请求数据
              var beacons = res.beacons;
              var reqContent = {};
              var bleArray = [];
              var times = [];
              for (var i = 0; i < beacons.length; i++) {
                var bleObj = {};
                bleObj.distance = beacons[i].accuracy;
                bleObj.uuid = beacons[i].uuid.substr(34,2);//uuids
                bleObj.rssi = beacons[i].rssi;
                //bleObj.mac = beacons[i].major + ":" + beacons[i].minor;
                bleObj.major = beacons[i].major;
                bleObj.minor = beacons[i].minor;
                //bleArray.push(bleObj);
                bleArray.push(bleObj.rssi);
                bleArray.push(bleObj.uuid);
              }
              //获取当前时间戳
              var timestamp = (new Date()).valueOf();
              timestamp = timestamp / 1000;
              bleArray.push(timestamp.toString());
              reqContent.ble = bleArray;//封装beacons数据
              //reqContent = bleArray[0].rssi;//封装rssi
              console.info('下面是初始数据.')
              console.log(reqContent);})

小程序在接受来自ibeacon广播数据时,安卓接收的速率1秒10条数据,速度与ibeacon设备设置的基本一致。手机型号是坚果pro1;

但是ios打开小程序接收速率非常慢,1秒一条,ibeacon广播的速率快与慢,ios始终都是1秒一条。 求官方解答,或者小伙伴有类似情况吗

最后一次编辑于  2018-10-23
回答关注问题邀请回答
收藏

3 个回答

  • 陕西图南玻璃何川
    陕西图南玻璃何川
    2018-10-23

    图1是安卓手机打印出来的数据,通过时间戳可以看出一秒内的大概数据


    下图2是ios苹果手机打印出来的数据,看时间戳一秒一条。

    2018-10-23
    有用 1
    回复
  • 付亚明
    付亚明
    2018-10-25

    1、ios扫描上传一秒一次是ios底层决定的,ios的app也是如此啊,小程序从底层获取的数据,没法提高速率。

    2、跟安卓不一样,ios使用小程序的蓝牙接口只能获取RSSI 、deviceId、localName、name,没有major、minor,甚至连uuid都没有哇,更没有manufactureData,当然无法封出beacon接口。

    3、感觉微信小程序ios的ble扫描好尴尬,扫描速度慢不说,用beacon接口扫不出来name;用蓝牙接口扫不出来uuid、major、minor,也无法解析具体的扫描回应包。


    2018-10-25
    有用
    回复 3
    • 陕西图南玻璃何川
      陕西图南玻璃何川
      2018-10-25

      对啊 很尴尬。

      但是ios小程序接收ibeacon设备广播数据是可以拿到beacon数据列表的,就是速度太慢了。头疼的是要把所有设备的uuid写进数组或者通过后台接口拿uuid,而且还是必须。 如果设备一多,这是个很麻烦的事。普通蓝牙接口又扫描不出来uuid。

      2018-10-25
      回复
    • 付亚明
      付亚明
      2018-10-25

      我之前一个项目就是由于这个原因只开发了安卓版本的,ios的就搁置了。

      2018-10-25
      回复
    • 陕西图南玻璃何川
      陕西图南玻璃何川
      2018-10-25回复付亚明

      目前来说,似乎是没有好的解决方案!

      2018-10-25
      回复
  • 王翊夫if
    王翊夫if
    2018-10-23

    楼主你好,iOS 小程序 beacon 接口是依赖系统提供的 beacon 接口,系统一有数据回调小程序会立刻给事件到前端这边的。这里的确无法提高回调的频率了。

    2018-10-23
    有用
    回复 8
    • 陕西图南玻璃何川
      陕西图南玻璃何川
      2018-10-23

      谢谢!也就是说这个跟小程序没关系   是ibeacon硬件设备和ios系统本身的问题对吗?

      2018-10-23
      回复
    • 王翊夫if
      王翊夫if
      2018-10-23回复陕西图南玻璃何川

      是的。这边是有需求需要频繁拿到 RSSI 么?

      2018-10-23
      回复
    • 陕西图南玻璃何川
      陕西图南玻璃何川
      2018-10-23回复王翊夫if

      嗯  小程序这边需要接收ibeacon设备不断广播的rssi值,设备不停止就一直接收。目前Android测试一切都正常,大概每秒10条左右。但是ios就不行,一秒一条实在是慢。硬件设备调高频率也只对Android起作用,ios始终都是一秒一条。 很是头疼呢  有解决方案的话忘告知。谢谢

      2018-10-23
      回复
    • 王翊夫if
      王翊夫if
      2018-10-24回复陕西图南玻璃何川

      我今天想想办法,之前有厂商是直接使用小程序的蓝牙接口,通过解开 manufactureData 来监听 iBeacon 的。 安卓小程序也是通过蓝牙接口来封装出 beacon 接口的,可以试试看。

      2018-10-24
      回复
    • 陕西图南玻璃何川
      陕西图南玻璃何川
      2018-10-24回复王翊夫if

      感谢 现在还有个问题,ios在设备断开后还会接收广播的数据,但是rssi值为0 我在“

      onBeaconUpdate搜索到的ibeacon设备rssi始终为0

      ”这个问题中有问到过  情况很类似。  还忘解答,十分感谢

      2018-10-24
      回复
    查看更多(3)
登录 后发表内容