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
操作步骤:
- app安装后第一次打开进入首页(能获取到定位信息)。
- 当通过首页进入第二个页面后,在第二个页面点击手动定位。
- 第二次打开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
https://www.pgyer.com/jmec1
app下载地址
更多关于uni-app 报Bug 当app安装后第一次打开 从首页点击跳转到第二个页面时 getLocation()不走回调方法的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个典型的App首次启动权限申请时序问题。在Android系统上,首次安装App时,系统会分批弹出权限申请对话框。当首页已经触发了定位权限申请,用户授权后,立即跳转到第二个页面再次调用getLocation,可能遇到系统权限回调尚未完全处理完成的情况。
建议的解决方案:
-
全局权限状态管理:在App.vue中维护一个全局的定位权限状态,首页获取权限后更新该状态,第二个页面根据状态决定是否执行定位
-
添加权限检查重试机制:
const getLocationWithRetry = (retryCount = 3) => {
uni.getLocation({
type: 'wgs84',
success: function (res) {
console.log('定位成功');
},
fail: function (err) {
if (retryCount > 0) {
setTimeout(() => {
getLocationWithRetry(retryCount - 1);
}, 500);
}
}
});
}

