![](/img/trans.png)
[英]How Can I Continue updating my location even when app is killed or removed from background in ios?
[英]If I have location services turned on then how can my app get killed when it enters background mode?
我的应用程序在后台运行时被杀死。
但是,出于位置跟踪的目的,我的应用始终在后台保持活动状态。
我已经与遇到此问题的用户进行了交谈,他们说他们的locationTracking设置为“始终”并且尚未关闭。
我假设即使该应用程序在后台(未挂起),由于内存警告,它仍可能会刷新出内存。
我的问题除了记忆之外还有其他原因吗? 我查看了Apple文档,发现这可能是由于+ 80%的CPU在后台运行了1分钟以上,但这没有发生。 我知道崩溃也可能是该应用再次启动的原因,但是我们的崩溃并没有增加。 我们没有在locationManager类中看到任何崩溃,并且我们在后台所做的唯一一件事就是跟踪位置并进行API调用。
我新添加到locationManager
类的唯一一件事是以下额外检查:
private func checkLocationAccuracy(from location: CLLocation) throws {
let ageOfLocation = -location.timestamp.timeIntervalSinceNow
if ageOfLocation >= maximumAcceptedStale {
throw LocationAccuracyError.stale(secondsOld: ageOfLocation)
}
if location.horizontalAccuracy <= 0 {
throw LocationAccuracyError.invalid
}
if location.horizontalAccuracy > MaximumAcceptedHorizontalAccuracy{
throw LocationAccuracyError.lowAccuracy(metersOff: location.horizontalAccuracy)
}
}
如果抛出错误,那么我将其记录下来。 否则,我只是打一个网络电话。 这项额外的检查将减少网络呼叫,因此我猜测它应该更有效地节约能源。
编写的代码有问题。
仅在用户更改应用程序的“位置(权限)设置”时才发生。 显然,这是没有针对测试的方法!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.