uni-app 报Bug 当app安装后第一次打开 从首页点击跳转到第二个页面时 getLocation()不走回调方法

uni-app 报Bug 当app安装后第一次打开 从首页点击跳转到第二个页面时 getLocation()不走回调方法

测试过的手机

小米手机,华为,vivo,oppo

示例代码:

uni.getLocation({
type: 'wgs84',
success: function (res) {
console.log('当前位置的经度:' + res.longitude);
console.log('当前位置的纬度:' + res.latitude);
}
});

两个页面onLoad 方法里面调用getLoaction

操作步骤:

  1. app安装后第一次打开进入首页(能获取到定位信息)。
  2. 当通过首页进入第二个页面后,在第二个页面点击手动定位。
  3. 第二次打开app后就不存在这个问题了。

预期结果:

app安装后,无论哪个页面都能正常获取定位坐标。

实际结果:

app安装后,第一次打开app后,在第二个页面无法获取定位坐标。

bug描述:

app安装后第一次打开进入首页(能获取到定位信息),当通过首页进入第二个页面后,在第二个页面中调用getLoaction没有任何作用。 第二次打开app后就不存在这个问题。 可见附件中的视频。

信息类别 详细信息
产品分类 uniapp/App
PC开发环境 Windows
PC操作系统版本 win10
HBuilderX类型 正式
HBuilderX版本 3.1.21
手机系统 全部
手机厂商 苹果
页面类型 vue
打包方式 云端
项目创建方式 HBuilderX

更多关于uni-app 报Bug 当app安装后第一次打开 从首页点击跳转到第二个页面时 getLocation()不走回调方法的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

更多关于uni-app 报Bug 当app安装后第一次打开 从首页点击跳转到第二个页面时 getLocation()不走回调方法的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的App首次启动权限申请时序问题。在Android系统上,首次安装App时,系统会分批弹出权限申请对话框。当首页已经触发了定位权限申请,用户授权后,立即跳转到第二个页面再次调用getLocation,可能遇到系统权限回调尚未完全处理完成的情况。

建议的解决方案:

  1. 全局权限状态管理:在App.vue中维护一个全局的定位权限状态,首页获取权限后更新该状态,第二个页面根据状态决定是否执行定位

  2. 添加权限检查重试机制

const getLocationWithRetry = (retryCount = 3) => {
  uni.getLocation({
    type: 'wgs84',
    success: function (res) {
      console.log('定位成功');
    },
    fail: function (err) {
      if (retryCount > 0) {
        setTimeout(() => {
          getLocationWithRetry(retryCount - 1);
        }, 500);
      }
    }
  });
}
回到顶部