【发布时间】:2015-01-25 11:32:24
【问题描述】:
我目前正在跟踪用户每行驶一英里的位置更新。而且我为应用程序打开了后台模式以查找位置更新。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions:
[NSObject: AnyObject]?) -> Bool {
locationManager.delegate = self
if iOS8 {
locationManager.requestAlwaysAuthorization()
} else {
locationManager.startUpdatingLocation()
locationManager.stopUpdatingLocation()
}
locationManager.distanceFilter = 1609.34 // meters in 1 mile
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.startUpdatingLocation()
return true
}
但是,我想知道,如果应用程序已被强制退出,我仍然希望应用程序更新位置。 startUpdatingLocation 类有可能吗?或者我应该使用startMonitoringSignificantLocationChanges
我阅读了文档here,但不太明白何时/当应用程序被强制退出时从startUpdatingLocation 移动到startMonitoringSignificantLocationChanges。应该在applicationWillTerminate函数下吗?
或者,如果这是可能的,或者我应该做些什么。
更新:
我读过here
在大多数情况下,系统在应用程序被强制后不会重新启动它们 由用户退出。一个例外是位置应用程序,它在 iOS 8 和 后来被用户强制退出后重新启动。其他 但是,在某些情况下,用户必须明确启动应用程序或重新启动 应用程序可以在设备启动前自动进入 系统后台。
如果是这样,我应该使用startUpdatingLocation 还是转到startMonitoringSignificantLocationChanges ?
【问题讨论】:
-
有兴趣。似乎如果用户配置了位置权限“始终”,系统会重新启动位置应用程序。
-
文档说“如果应用程序因用户强制退出以外的任何原因终止,系统会在以下事件之一发生时启动应用程序:”。我认为这意味着系统只有在系统强行终止应用程序时才会重新启动应用程序。如果用户退出应用,应用将不会重新启动。
-
@EIMEI - 用户可以仅通过向上滑动强制退出应用程序 - 没有其他“退出”选项,因此在定位服务的情况下,iOS 将重新启动需要时应用程序,无论它是如何/为何终止的
-
@Paulw11 那么,如果应用程序被用户强制退出(向上滑动),系统将重新启动并且仍会更新位置?
-
在 ios8 上是的,根据问题中引用的文档
标签: ios ios7 swift ios8 cllocationmanager