叫醒我的不是梦想,是bug
问题描述: 小程序里的定位功能不能唤起地图,一直在确认授权之间来回切。
遇到同样问题的同学,如果着急,直接看最后一段即可。
早上被产品同学呼叫,说小程序因为定位功能出了问题不能下单了。
赶紧打开电脑,查看小程序更新日志:
客户端 7.0.0 新增配置
A 新增 框架 支持页面级自定义导航配置 navigationStyle: custom 详情 A 新增 框架 支持页面禁止右滑返回手势 disableSwipeBack: true 详情 A 新增 框架 如需使用位置接口,需在 app.json 中添加配置 permission 字段用于说明位置接口用途
以为自己很快找到问题,在app.json添加好了配置:
"permission": { "scope.userLocation": { "desc": "你的位置信息将用于推荐距离最近的订单" } }复制代码
发现问题还是不断复现,且只有部分手机有问题。
赶紧拿过来问题机真机调试,发现有段代码没有执行,
wx.openSetting({ success: function (settingRes) { if (settingRes.authSetting['scope.userLocation']) { wx.getLocation({ type: 'gcj02', success: function (res) { let { latitude, longitude } = res that.globalData.iSlocation = true that.globalData.latitude = latitude that.globalData.longitude = longitude callBack && callBack() } }) } else { } } })复制代码
获取授权配置一切正常,settingRes.authSetting['scope.userLocation']
是true
, 但是
wx.getLocation({ type: 'gcj02', success: function (res) { let { latitude, longitude } = res that.globalData.iSlocation = true that.globalData.latitude = latitude that.globalData.longitude = longitude callBack && callBack() } })复制代码
根本不执行。
突然想死。但是内心强大的程序媛不能放弃哈。 接着调试,点问题机的扫一扫不小心点成了摇一摇。
这时候,奇迹出现了。
摇一摇页面出现了定位提醒,这个应该是微信的定位授权,点了同意。
然后,再点开我的小程序,问题不出现了!!
所以,我在想,小程序是基于微信的,小程序虽然授权了位置信息,但是微信的位置授权因为某种原因(升级?清除缓存?)失效了。这时候小程序的也不能用。 小程序的位置授权是依赖微信的位置授权的?只能这样猜一下了。
吐槽一下,小程序的文档真的写的挺糊弄的。