获取小程序定位授权状态:1 否 2 是
getLocationAuthorize(){
return new Promise((resolve,reject)=>{
//获取用户的当前设置
uni.getSetting({
success:(res)=>{
//判断是否有定位授权scope.userLocation,true表示已授权
if (!res.authSetting['scope.userLocation']) {
//提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。如果用户之前拒绝了授权,此接口会直接进入失败回调
uni.authorize({
scope: 'scope.userLocation',
success:()=>{
resolve(2)
},
fail:()=>{
//根据缓存判断只显示一次跳转设置页授权的弹框
let locationAuth = uni.getStorageSync('locationAuth');
if (!locationAuth&&err.errMsg == 'authorize:fail auth deny') {
uni.setStorageSync('locationAuth',true);
uni.showModal({
title: '授权提示',
content: '是否允许获取定位权限',
success: (resp) => {
if (resp.confirm) {
//调起客户端小程序设置界面,返回用户设置的操作结果。
uni.openSetting({
success(
settingdata
) {
//用户设置定位权限
if (settingdata
.authSetting[
"scope.userLocation"
]) {
resolve(2)
} else {
resolve(1)
}
}
})
} else {
//取消弹框
resolve(1)
}
}
})
}
}
})
} else{
resolve(2)
}
}
});
})
},