- 当前 Bug 的表现(可附上截图)
第一次弹窗让用户授权并被用户拒绝后,用户点击<button open-type="openSetting" bindopensetting="openSetting">授权登录</button>去授权,用户授权后返回再调用wx.getLocation时,第一次会走fail(这时使用wx.getSetting打印出来的结果为{scope.userLocation: true}),打印出来的err为{errMsg: "getLocation:fail auth deny"},第二次再调用wx.getLocation正常走success,在模拟器上没问题,真机和线上有这问题。
目前的解决方法是
setTimeout(()=>{
wx.getLocation({
..........
});
}, 100);
我尝试过了,还是没有用。就算放在了getsetting()中回调中也没法调用成功
我这边测试过是可行的,请查看下你写的代码。
弹窗后用户授权行为应该也是个异步操作;导致在真机上立刻调用getLocation会触发fail回调(模拟器没有这个现象);
我采取方式和楼主一样;只不过我设置的是1000毫秒;
setTimeout(()=>{
wx.getLocation({
..........
});
}, 1000);
+1,允许授权后立即调用getLocation返回失败getLocation:fail auth deny
getLocation的失败回调里。。再来一发呢?
那样可以,就授权回来的第一次不行。