uni-app打包成iOS在真机上运行,使用高德在线定位,偶尔出现一段时间内无法定位
uni-app打包成iOS在真机上运行,使用高德在线定位,偶尔出现一段时间内无法定位
类别 | 信息 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Windows |
PC版本号 | win10 |
HBuilderX | 正式 |
HBuilderX版本 | 4.45 |
手机系统 | iOS |
手机版本号 | iOS 18 |
手机厂商 | 苹果 |
手机机型 | iphone 15 |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
示例代码:
getLocation() {
uni.getLocation({
type: 'gcj02', // 使用高德坐标系
altitude: false,
isHighAccuracy: false,
highAccuracyExpireTime: 4500,
success: function(res) {}
});
}
操作步骤:
1
预期结果:
1
实际结果:
1
bug描述:
打包成iOS app,使用高德在线定位服务,偶发一段时间内一直获取不到定位,可能过半天或者一天,重新定位又可以,定位权限已打开,定位不到时报错:
{"errMsg":"getLocation:fail Position retrieval timed out.","errCode":3,"code":3}
更多关于uni-app打包成iOS在真机上运行,使用高德在线定位,偶尔出现一段时间内无法定位的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
同一套代码,安卓一直没有问题,苹果会偶先,半年内大概偶现几次。
更多关于uni-app打包成iOS在真机上运行,使用高德在线定位,偶尔出现一段时间内无法定位的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个定位超时问题在uni-app iOS端确实比较常见,主要是由于iOS系统对定位服务的特殊限制导致的。以下是关键分析:
- 系统限制原因:
- iOS对后台定位有严格限制,特别是从iOS 13开始
- 当应用进入后台时,系统可能会暂停定位服务以节省电量
- 系统定位服务本身存在缓存机制,不会频繁更新
- 建议优化方案:
getLocation() {
uni.getLocation({
type: 'gcj02',
altitude: false,
isHighAccuracy: true, // 改为高精度模式
highAccuracyExpireTime: 10000, // 适当延长超时时间
success: (res) => {},
fail: (err) => {
// 失败时重试机制
setTimeout(() => this.getLocation(), 2000)
}
});
}