前言:一直以来用微信小程序使用蓝牙。都没出现问题,但是最近部分反馈说有人可以,但是升级微信后,用不了。一番调试后,发现提示了一个错误,但是文档又没有说明怎么解决...
{errno: 1509008, errCode: -1, errMsg: "startBluetoothDevicesDiscovery:fail:location permission is denied", isDiscovering: false}
从官方文档查询:https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.startBluetoothDevicesDiscovery.html
并没有这个这个错误代码。但是文档下方又有一句话提示:
考虑到蓝牙功能可以间接进行定位,安卓 6.0 及以上版本,无定位权限或定位开关未打开时,无法进行设备搜索。这种情况下,安卓 8.0.16 前,接口调用成功但无法扫描设备;8.0.16 及以上版本,会返回错误。
纵使手机打开蓝牙,定位,并授权微信有定位权限。但是仍然部分安卓手机还报错。
所以推断,必须微信小程序主动弹出定位授权让用户点击同意。
"permission": {
"scope.userLocation": {
"desc": "授权定位有助于提高蓝牙水表的连接成功率"
}
},
简单粗暴的办法就是首页调用一次定位,不要重复调用,以免影响性能。如:
wx.getLocation({
type: 'gcj02',
success (res) {
console.log(res)
}
})
当打开小程序,就会提示:
点击同意后即可。如果不同意,用户也可以通过小程序设置来开启定位权限。
更新协议:
最后提交体验版审核,待通过后,发布新版就可以解决问题了
微信小程序不定期会修改一些接口权限,要留意官方通知,还有就是要具体调试错误代码和错误日志。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。