进入小程序,在需要使用位置的时候调用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()
}
}
})
};
你好,请提供一下出现问题的机型和微信版本,以及能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。