uni-app 默认没有授权app 重新打开uni.getLocation 获取位置失败
uni-app 默认没有授权app 重新打开uni.getLocation 获取位置失败
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win10 | HBuilderX |
操作步骤:
- 打开app前禁止定位 然后打开tabbarjs接口-》位置=》获取当前位置 点击获取位置 会提示去设置设置权限 然后设置完回来 获取位置 会显示 获取失败
预期结果:
- 成功获取定位
实际结果:
- 获取位置失败
bug描述:
- 当用户第一次拒绝定位,然后重新让用户同意定位 uni.getLocation会定位失败 官方示例也是这样 步骤 1.打开app前禁止定位 然后打开tabbarjs接口-》位置=》获取当前位置 点击获取位置 会提示去设置设置权限 然后设置完回来 获取位置 会显示 获取失败
更多关于uni-app 默认没有授权app 重新打开uni.getLocation 获取位置失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 默认没有授权app 重新打开uni.getLocation 获取位置失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个常见的权限回调处理问题。当用户从系统设置中授权后返回应用时,需要重新触发定位请求。
解决方案:
- 在
onShow生命周期中监听应用激活状态 - 使用全局变量标记权限请求状态
- 重新执行定位获取
示例代码:
let hasRequestPermission = false
export default {
onShow() {
if (hasRequestPermission) {
hasRequestPermission = false
this.getLocation()
}
},
methods: {
getLocation() {
uni.getLocation({
type: 'wgs84',
success: (res) => {
console.log('定位成功', res)
},
fail: (err) => {
if (err.errMsg.includes('auth deny')) {
hasRequestPermission = true
uni.openSetting({
success: (res) => {
// 用户已授权,onShow中会重新获取
}
})
}
}
})
}
}
}

