IOS应用程序终止时获取位置更新,而不使用significantChange

我为这个主题的冗余道歉,但尽pipe所有给出的答案,我不能识别的应用程序被终止时获得准确的最佳位置更新的可能性。 我不想使用monitoringSignificantChange,我想要最好的准确性; 我不会在AppStore上提交应用程序,所以苹果限制也不是问题。

我经历了这些:

– 即使应用程序被杀死/终止,位置更新

– iOS更新位置,即使应用程序终止

– 应用程序终止时处理位置更新

– http://mobileoop.com/getting-location-updates-for-ios-7-and-8-when-the-app-is-killedterminatedsuspended

还有更多,但它是不可能的,而不是可能的。 我目前有我的项目,一切工作与greatChange很好,但我现在需要更好的准确性。

有人告诉我,如果得到最好的准确位置更新时,应用程序被杀害是可能的吗?

无限谢谢你,

从Apple文档中查看下面的内容,显然有两种方法可以避免使用重要的位置更改从背景中唤醒应用程序。 我已经用粗体标出了可以用来重新启动应用程序的服务。

在后台使用位置服务大多数位置服务是为了在应用程序处于前台时使用,但也有一些也可以在后台运行。 在某些情况下,位置事件甚至可能会导致您的应用程序重新启动以处理事件。 要在后台运行大多数位置服务,您需要在Xcode项目的function选项卡中启用位置更新后台模式。 对于启动应用程序的服务,您需要向用户请求(并授予)“始终”授权。

标准位置服务通常在应用程序在前台运行时传递事件。 当您的应用程序处于后台时,只有为应用程序启用位置更新后台模式时,此服务才会提供事件。 此服务不会重新启动已终止的iOS应用程序。

重要的位置更改服务通常在应用程序在前台或后台运行时传递事件。 对于已终止的iOS应用程序,此服务重新启动应用程序以传递事件。 使用此服务需要用户的“始终”授权。

区域监控服务通常在前台或后台运行应用程序时发送事件。 (您可以将此服务用于地理位置和灯塔区域。) 对于已终止的iOS应用程序,此服务会重新启动应用程序以传递事件。 使用此服务需要用户的“始终”授权。

当应用程序在前台运行时,信标测距通常会传送事件。 当您的应用程序处于后台时,只有为应用程序启用位置更新后台模式并且标准位置服务正在运行时,此服务才会提供事件。 (如果信标区域的notifyEntryStateOnDisplay属性为YES,则唤醒设备会导致应用程序在后台执行信号范围几秒钟。)此服务不会重新启动已终止的iOS应用程序; 但是,您可以通过使用区域监视服务监视信标区域来重新启动。

标题服务通常在iOS应用程序在前台运行时传递事件。 当您的应用程序处于后台时,只有为应用程序启用位置更新后台模式并且标准位置服务正在运行时,此服务才会提供事件。 此服务不会重新启动已终止的iOS应用程序。

访问服务通常在iOS应用程序正在运行时传递事件。 当您的应用程序处于后台时,只有为应用程序启用位置更新后台模式并且标准位置服务正在运行时,此服务才会提供事件。 对于已终止的iOS应用程序,此服务重新启动应用程序以传递事件。 使用此服务需要用户的“始终”授权。

启用位置更新后台模式可确保应用程序在后台继续接收位置事件。 当应用程序移动到后台时,系统将位置服务指示器添加到状态栏以让用户知道应用程序正在使用位置服务。 系统可能会随时终止应用程序以回收其内存或其他资源。

另外从文档中,

获取访问位置在iOS中,访问服务为需要用户访问的有趣地点的位置信息的应用程序提供重要位置更改服务的替代scheme。 例如,如果用户长时间在一个位置,则服务可能在用户到达该位置时产生事件,而在用户离开该位置时服务可能产生事件。 该服务旨在用于可能已经在使用重要位置更改服务的应用程序,并希望采用更低功耗的方式来执行此操作。 您不会使用此服务来创build依赖于常规位置更新的导航应用程序或应用程序。

文件链接:

https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/index.html#//apple_ref/doc/uid/TP40007125-CH3-SW73

当您的应用终止时,连续的位置更新将停止。

即使没有运行,地理围栏通知也会重新启动您的应用。 我认为重大的位置变化也会重新启动你的应用程序,但我不太确定。

一旦你重新启动,你可以重新启动位置更新,准确性设置为最好的,但是我想你将需要使用这两个API之一来终止后再次重新启动。