我目前正在跟踪每行程的用户位置更新。我打开后台模式,让应用程序查找位置更新。
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和iOS中 之后被用户强制退出后重新启动。其他 但是,用户必须明确启动应用程序或重新启动应用程序 应用程序之前的设备可以自动启动进入 系统背景。
如果是这种情况,我应该使用startUpdatingLocation
还是转移到startMonitoringSignificantLocationChanges
?
答案 0 :(得分:1)
如果应用已终止,则无法为该应用运行任何程序。
当应用程序终止时,并不总是处理applicationWillTerminate函数。在某些情况下,系统会在没有任何通知的情况下杀死应用程序。请阅读有关应用程序生命周期的文档。
我认为您希望您的应用程序像守护程序服务一样运行。除非设备被监禁,否则iOS不允许我们这样做。
https://www.chrisalvares.com/blog/7/creating-an-iphone-daemon-part-1/
如果您关心设备电池,您可以这样做。