Taro-react 中小程序用户授权地理位置以及拒绝授权的处理
import Taro from '@tarojs/taro'
// 获取用户地理位置信息
export const getUserLocation = () => {
return new Promise((resolve, reject) => {
Taro.getLocation({
type: 'wgs84',
success: (res) => {
resolve(res)
},
fail: (err) => {
if (err.errMsg.includes('auth deny')) {
// 用户拒绝授权地理位置信息
Taro.showModal({
title: '提示',
content: '此功能需要获取您的地理位置信息,请确认授权',
success: (modalRes) => {
if (modalRes.confirm) {
// 引导用户到设置页面
Taro.openSetting({
success: (settingRes) => {
if (settingRes.authSetting['scope.userLocation']) {
// 用户在设置页面重新同意授权
getUserLocation().then(resolve).catch(reject)
} else {
reject(new Error('用户仍然拒绝授权'))
}
},
fail: () => {
reject(new Error('无法打开设置页面'))
}
})
} else {
reject(new Error('用户拒绝授权'))
}
},
fail: () => {
reject(new Error('无法显示提示'))
}
})
} else {
reject(err)
}
}
})
})
}
这段代码首先尝试获取用户的地理位置信息,如果失败,会检查错误信息来判断是否是因为用户拒绝授权引起的。如果是,它会展示一个模态窗口提示用户需要地理位置信息,并提供一个到小程序设置页面的链接,让用户可以重新同意授权。如果用户在模态窗口选择确认,并且设置生效,代码会递归调用自身获取地理位置信息。如果用户选择取消或者设置页面打开失败,则会进入错误处理流程。
评论已关闭