【问题标题】:IOS Getting location updates when app terminated without using significantChangeIOS在应用程序终止而不使用显着更改时获取位置更新
【发布时间】:2016-09-23 20:21:20
【问题描述】:

对于这个主题的冗余,我深表歉意,但尽管给出了所有答案,但我无法确定在应用程序终止时获得准确最佳位置更新的可能性。 我不想使用monitoringSignificantChange,我想要最好的准确性;我不会在 AppStore 上提交应用程序,因此 Apple 的限制也不是问题。

我已经经历了这些:

-Location update even when app is killed/terminated

-iOS update location even when app is terminated

-Working with location updates when app is terminated

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

还有更多,但尚不清楚它是否可能。我目前有我的项目,在显着变化下一切都很好,但我现在需要更高的准确性。

如果可以在应用程序被杀死时获得最准确的位置更新,有人可以直接告诉我吗?

非常感谢你,

【问题讨论】:

标签: ios background cllocation terminate


【解决方案1】:

查看 Apple 文档中的以下内容,您显然有 2 种替代方法可以避免使用显着的位置更改来从后台唤醒应用程序。 我已用粗体标出了可用于在应用已终止时重新启动应用的服务。

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

标准位置服务在应用程序运行时正常传递事件 在前台运行。当您的应用程序在后台时,这 服务仅在 location-updates 后台模式下传递事件 为应用程序启用。此服务不会重新启动 iOS 应用程序 已终止。

重大地点变更服务正常传递事件 当应用程序在前台或后台运行时。 对于一个 终止的 iOS 应用程序,此服务重新启动应用程序以交付 使用此服务需要获得“始终”的授权 用户。

区域监控服务正常传递事件,而 应用程序在前台或后台运行。 (你可以用这个 地理和信标区域的服务。)对于终止 iOS 应用,此服务重新启动应用以传递事件。 使用 此服务需要用户“始终”授权。

当应用在 前景。当您的应用程序在后台时,此服务会提供 仅当启用了位置更新后台模式时的事件 该应用程序和标准位置服务正在运行。 (如果信标 region 的 notifyEntryStateOnDisplay 属性为 YES,唤醒设备 导致应用程序在 背景。)此服务不会重新启动已被 终止;但是,您可以通过监视信标重新启动 使用区域监控服务的区域。

标题服务在 iOS 应用程序运行时正常传递事件 在前台运行。当您的应用程序在后台时,这 服务仅在 location-updates 后台模式下传递事件 为应用程序启用并且标准位置服务正在运行。 此服务不会重新启动已终止的 iOS 应用。

访问服务在 iOS 应用程序运行时正常传递事件 在前台运行。当您的应用程序在后台时,这 服务仅在 location-updates 后台模式下传递事件 为应用程序启用并且标准位置服务正在运行。 对于已终止的 iOS 应用,此服务会重新启动该应用以传递事件。 使用此服务需要获得“始终”授权 用户。

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

同样来自文档,

获取访问过的位置 在 iOS 中,访问服务为需要位置信息的应用提供了替代重大位置更改服务的方法 有关用户访问过的有趣地点的信息。 例如,如果用户在一个位置停留很长时间 时间,服务可能会在用户到达时生成一个事件 该位置和另一个当用户离开该位置时。这 服务适用于可能已经在使用 重要的位置更改服务,并希望使用更低功耗的方式 这样做。您不会使用此服务来创建导航应用程序或 依赖定期位置更新的应用。

文档链接:

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

【讨论】:

  • 非常感谢...所以除了访问服务或区域监控之外别无选择。我正在寻找在应用程序被杀死时获得持续的位置更新。但我了解 Apple 仅将其限制为事件。
  • 我也在做同样的事情,但奇怪的是,我的应用程序的唤醒时间因操作系统版本和设备而异,即使使用相同的代码库也是如此。检查这个:stackoverflow.com/questions/50250239/…
【解决方案2】:

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

地理围栏通知会重新启动您的应用,即使它没有运行。我认为重大的位置更改也会重新启动您的应用,但我对此不太确定。

重新启动后,您可以再次启动位置更新,并将准确度设置为您想要的最佳值,但我认为您将需要使用这两个 API 之一在您被终止后重新启动.

【讨论】:

  • 我也在做同样的事情,但奇怪的是,我的应用程序的唤醒时间因操作系统版本和设备而异,即使使用相同的代码库也是如此。检查这个:stackoverflow.com/questions/50250239/…
猜你喜欢
  • 2017-07-30
  • 2016-04-07
  • 1970-01-01
  • 2014-09-06
  • 2015-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多