- 检查授权情况
- false 需要打开授权页面
- 这个授权页面需要点击事件才能触发,一般用小程序的 modal 确定事件代替,也可以自己写一个button触发。
下面是定位授权的判断,wepy 例子
// 判断授权
getSetting () {
let that = this;
wx.getSetting({
success (res) {
console.log('setting-suc', res.authSetting);
// 已授权或者未请求过授权
if (res.authSetting['scope.userLocation'] || res.authSetting['scope.userLocation'] === undefined) {
that.getLocation();
} else if (!res.authSetting['scope.userLocation']) {
// 拒绝授权,showModal 为了触发点击事件,里面的title,content自定义
wx.showModal({
title: '小程序授权',
content: '请授权定位功能,否则无法顺利体验小程序功能',
success: res => {
if (res.confirm) {
that.openSetting();
}
}
});
}
}
});
}
// 打开授权
openSetting () {
wx.openSetting({
success (res) {
console.log('open-suc', res.authSetting);
},
fail (err) {
console.log('open-err', err);
}
});
}
// 获取位置
getLocation () {
let that = this;
wx.getLocation({
type: 'wgs84',
success: function(res) {
console.log('location-suc', res);
that.latitude = res.latitude;
that.longitude = res.longitude;
that.$apply();
that.getCityList();
},
fail: function (err) {
console.log('location-err', err);
// 有些手机定位功能无法使用,例如华为手机,需要打开手机定位,据说是安全策略的设置。
if (err.errMsg.indexOf('ERROR_SERVER_NOT_LOCATION') > -1) {
wx.showToast({
title: '请打开手机定位功能,下拉页面重新获取数据',
icon: 'none'
});
} else if (err.errMsg.indexOf('auth deny') > -1) {
wx.showToast({
title: '请打开授权定位功能,否则无法顺利使用小程序',
icon: 'none'
});
}
}
});
}