一、错误详情:
{errno: 1509008, errCode: -1, errMsg: "startBluetoothDevicesDiscovery:fail:location permission is denied", isDiscovering: false}
并没有这个这个错误代码。但是文档下方又有一句话提示:
考虑到蓝牙功能可以间接进行定位,安卓 6.0 及以上版本,无定位权限或定位开关未打开时,无法进行设备搜索。这种情况下,安卓 8.0.16 前,接口调用成功但无法扫描设备;8.0.16 及以上版本,会返回错误。
纵使手机打开蓝牙,定位,并授权微信有定位权限。但是仍然部分安卓手机还报错。
所以推断,必须微信小程序主动弹出定位授权让用户点击同意。
二、解决办法
2.1 给微信小程序 app.json 增加 permission 节点配置
"permission": {
"scope.userLocation": {
"desc": "授权定位有助于提高蓝牙水表的连接成功率"
}
},
2.2 调用一次手机定位
简单粗暴的办法就是首页调用一次定位,不要重复调用,以免影响性能。如:
wx.getLocation({
type: 'gcj02',
success (res) {
console.log(res)
}
})
当打开小程序,就会提示:
image.png
点击同意后即可。如果不同意,用户也可以通过小程序设置来开启定位权限。
2.3 提交审核的时候,需要更新用户隐私协议,完善一下
image.png更新协议:
image.png最后提交体验版审核,待通过后,发布新版就可以解决问题了
三、总结
微信小程序不定期会修改一些接口权限,要留意官方通知,还有就是要具体调试错误代码和错误日志。
网友评论