我们的微信小程序,用到了蓝牙扫描接口用于定位及导航。发现有个安卓兼容性问题——更新接口 wx.onBeaconUpdate 在不同安卓手机上差异较大。
在部分手机上表现较好,基本1秒左右周期返回搜索周边蓝牙(蓝牙设备:固定发射频率为 次/200ms)。但在个别手机上表现较差,体现在两个方面:
1. 回调周期不确定,有些手机较慢, 如1.2秒回调一次;
2. 有扫描不到或回调丢失情况,个别手机出现在几秒或更长时间内回调一次,漏掉不少蓝牙设备;
请问导致这两个问题的主要原因是什么,及如何解决?
发现问题设备及对应微信版本:
1. 谷歌pixel,微信版本:7.0.7
2. 荣耀magic2 (tny al00),微信版本号: 7.0.7
麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
另外,在手机微信上传日志: 我->设置->帮助与反馈右上角有个上报日志的入口,提供出现问题的微信号,出现问题的时间点(具体到分钟)
微信版本号:7.0.7, 出现问题的微信号:gx17396257759 (用其他微信测试也一样)
微信日志已上传!
问题修正:
我们用的小程序,内嵌H5页面,使用jsapi sdk相关接口扫描蓝牙。
问题描述:
蓝牙扫描回调接口周期不定,从1 ~ 10 多秒,都有可能。偶有更长时间不回调情况。
代码片段如下:
function startSearchBeacons() {
wx.startSearchBeacons({
ticket: "",
complete: function (argv) {
switch (argv.errMsg) {
case 'startSearchBeacons:ok':
case 'startSearchBeacons:already started':
onSearchBeacons();
break;
case 'startSearchBeacons:bluetooth power off':
case 'startSearchBeacons:location service disable':
case 'startSearchBeacons:system unsupported':
console.log('蓝牙未打开或者服务被关闭或者不支持');
break;
default:
console.log('未知错误');
break;
}
}
});
}
/**
* 获取蓝牙信息
*/
function onSearchBeacons() {
wx.onSearchBeacons({
complete: function (argv_info) {
let get_curr_beaconInfo = argv_info.beacons;
console.log(get_curr_beaconInfo);
}
});
}
let http_url = 'https://xxx.xxx.xxx';
let init_info = ['checkJsApi', 'startSearchBeacons', 'stopSearchBeacons', 'onSearchBeacons'];
nativeAjax({
url: http_url + '/checkXcxMapSign',
type: 'GET',
dataType: "json",
data: {
"url": encodeURIComponent(window.location.href.split('#')[0])
},
async: false,
success: function (res, xml) {
if (res) {
let data = res.data;
wx.config({
debug: false,
appId: data.appId,
timestamp: data.timestamp,
nonceStr: data.nonceStr,
signature: data.signature,
jsApiList: init_info
});
wx.ready(function () {
//获取蓝牙信息
startSearchBeacons();
});
wx.error(function (res) {
console.log('初始化错误')
});
} else {
console.log('初始化错误2')
}
},
fail: function (status) {
console.log('初始化数据错误')
}
});