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秒一条。 求官方解答,或者小伙伴有类似情况吗
图1是安卓手机打印出来的数据,通过时间戳可以看出一秒内的大概数据
下图2是ios苹果手机打印出来的数据,看时间戳一秒一条。
1、ios扫描上传一秒一次是ios底层决定的,ios的app也是如此啊,小程序从底层获取的数据,没法提高速率。
2、跟安卓不一样,ios使用小程序的蓝牙接口只能获取RSSI 、deviceId、localName、name,没有major、minor,甚至连uuid都没有哇,更没有manufactureData,当然无法封出beacon接口。
3、感觉微信小程序ios的ble扫描好尴尬,扫描速度慢不说,用beacon接口扫不出来name;用蓝牙接口扫不出来uuid、major、minor,也无法解析具体的扫描回应包。
对啊 很尴尬。
但是ios小程序接收ibeacon设备广播数据是可以拿到beacon数据列表的,就是速度太慢了。头疼的是要把所有设备的uuid写进数组或者通过后台接口拿uuid,而且还是必须。 如果设备一多,这是个很麻烦的事。普通蓝牙接口又扫描不出来uuid。
我之前一个项目就是由于这个原因只开发了安卓版本的,ios的就搁置了。
目前来说,似乎是没有好的解决方案!
楼主你好,iOS 小程序 beacon 接口是依赖系统提供的 beacon 接口,系统一有数据回调小程序会立刻给事件到前端这边的。这里的确无法提高回调的频率了。
谢谢!也就是说这个跟小程序没关系 是ibeacon硬件设备和ios系统本身的问题对吗?
是的。这边是有需求需要频繁拿到 RSSI 么?
嗯 小程序这边需要接收ibeacon设备不断广播的rssi值,设备不停止就一直接收。目前Android测试一切都正常,大概每秒10条左右。但是ios就不行,一秒一条实在是慢。硬件设备调高频率也只对Android起作用,ios始终都是一秒一条。 很是头疼呢 有解决方案的话忘告知。谢谢
我今天想想办法,之前有厂商是直接使用小程序的蓝牙接口,通过解开 manufactureData 来监听 iBeacon 的。 安卓小程序也是通过蓝牙接口来封装出 beacon 接口的,可以试试看。
感谢 现在还有个问题,ios在设备断开后还会接收广播的数据,但是rssi值为0 我在“
onBeaconUpdate搜索到的ibeacon设备rssi始终为0
”这个问题中有问到过 情况很类似。 还忘解答,十分感谢