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


这是一个常见的权限回调处理问题。当用户从系统设置中授权后返回应用时,需要重新触发定位请求。

解决方案:

  1. onShow 生命周期中监听应用激活状态
  2. 使用全局变量标记权限请求状态
  3. 重新执行定位获取

示例代码:

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中会重新获取
              }
            })
          }
        }
      })
    }
  }
}
回到顶部