进入小程序,在需要使用位置的时候调用wx.getSetting()查询位置授权情况,如果已授权,直接使用wx.getLocation()获取位置;如果未查询到授权,则调用wx.authorize()申请位置授权,如果用户同意授权,则调用wx.getLocation()获取位置;如果用户不同意,则弹窗提示.
目前的遇见的异常变现是:
在ios9.1系统中,已授权的用户有一定几率在wx.getSetting()查询授权的时候未查询到授权,调用wx.authorize()申请位置授权的时候直接进入失败回调
定位的代码如下:
export const getLocation = (successCallBack,failCallback=null,type='gcj02') => {
/**
* 打开设置
* 注意: wx.openSetting接口已被废弃,只能使用button组件打开设置界面,需要在授权步骤自定义弹窗
*/
const openSetting = () => {
wx.openSetting({
success:res=>{
if (!res.authSetting['scope.userLocation']) {
wx.showToast({
title: '您拒绝了小巴使用位置信息',
icon:'none',
duration:2000,
});
}
}
});
};
/**
* 弹出授权
*/
const authLocation = () => {
wx.authorize({
scope: 'scope.userLocation',
success:()=> {
location();
},
fail:()=>{
wx.showModal({
title:'提示',
content:'您拒绝了小巴使用位置信息,部分功能将无法正常工作.如果是误操作,请在"设置"中开启小巴的定位权限',
showCancel:false,
// success:()=>{
// openSetting()
// }
});
}
})
};
/**
* 定位
*/
const location = () => {
wx.getLocation({
type,
success: res => {
successCallBack && successCallBack(res);
},
fail:res => {
failCallback && failCallback(res);
}
})
};
/**
* 获取微信设置
*/
wx.getSetting({
success(res) {
if (!res.authSetting['scope.userLocation']) {
authLocation();
}else{
location()
}
}
})
};
你好,问题为复现。麻烦提供一下出现问题的手机的型号以及微信版本
你好:
微信: 6.7.1
机型: iphone 6 / iPhone 7plus
系统版本: iOS 9.1/ iOS 10.3.3 / iOS11.4
问题出现频率: 偶发 (ios9.1中出现频率更高,但也不是必现)
代码片段: wechatide://minicode/ruxJLYmp7P1Z
问题出现时的表现: 小程序在前台运行,点击home键回到桌面,再次打开微信,小程序还在前台,此时出现授权失败弹窗(如下图);打开小程序"设置"界面,一片空白,实际上已对该小程序授权
代码逻辑: 小程序在onShow()中会重新定位,并和上一次成功上报的位置作比较,超过一定距离则上报;并且每隔一段时间也会上报一次(定位逻辑请参阅代码片段)
是只有这2台设备有问题么?最新版的6.7.2客户端有问题不?小程序的appid也提供一下。还有操作的时间以及出现问题的用户的微信号。
"appid": "wxd8e337d6e05643de",
"wechat_1": "xiaohuo-duoduo123"
"operationTime_1": "2018-08-30 9:00~10:30"
"wechat_2": "wxid_h8rmo4ncay9n12"
"operationTime_2": "2018-08-27 15:00~18:00" || "2018-08-28 15:00~18:00" || "2018-08-29 15:00~18:00"
"问题设备客户端版本:" 6.7.1
"是否在6.7.2中复现": 未知,(后续会持续关注,如果出现会及时反馈)
"是否只在上述两款设备中出现": 否,(iPhone7Plus,iOS11.4,微信版本6.7.1中也出现过一次)
麻烦了!
你好,今天这个问题又出现了,已经授权位置信息的小程序,打开设置界面什么也没有
5秒上报一次位置,这个bug不解决就会影响正常的业务流程
只要这个bug出现,打开设置界面就肯定是空白
只有杀掉微信进程重新进入才会正常
wechatide://minicode/ruxJLYmp7P1Z
微信是最新版: 6.7.1
机型:iphone 6 / iPhone 7plus
系统版本: iOS 9.1 / iOS11.4
问题出现频率: 偶发 (ios9.1中出现频率更高,但也不是必现)
另外代码片段中wx.getSetting()好像是无法使用的吧
你好,请提供一下出现问题的机型和微信版本,以及能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
你好,有结果了吗?
此接口即将废弃,这里的逻辑不重新处理的吗?
"设置"的打开,目前先让用户自己操作(捂脸~~),后续会改成直接替用户打开😆
你好,今天在iOS10.3.3的系统上也出现了这个问题
表现: 小程序在前台运行,点击home键回到桌面,再次打开微信,小程序还在前台,此时出现授权失败弹窗(如下图);打开设置界面,一片空白,实际上已对小程序授权
逻辑: 小程序在onShow()中会重新定位,并和上一次成功上报的位置作比较,超过一定距离则上报;并且每隔一段时间也会上报一次(定位逻辑请参阅代码片段:wechatide://minicode/ruxJLYmp7P1Z)
5秒上报一次位置,这个bug不解决就会影响正常的业务流程
只要这个bug出现,打开设置界面就肯定是空白
只有杀掉微信进程重新进入才会正常