Swift 3 - 始终保持位置

时间:2017-04-24 15:57:33

标签: swift mapkit core-location

我有一个用于跟踪面包车司机的应用程序。我需要每隔30秒左右就能得到一个位置(x& y)。我有一个方法和一个计时器,允许我这样做。

我想知道(如果可能的话)无论应用程序是否处于活动状态,我都能如何工作?

2 个答案:

答案 0 :(得分:1)

我最近开始搞乱核心位置所以我的知识不是防弹。

如果应用仍处于有效,但仅在后台,那么只要您将allowsBackgroundLocationUpdates设置为true,您就会获得更新。但这可能会耗费电池,它可能会持续到你的电池耗尽为止。

希望通过设置来避免不断的位置检查: pausesLocationUpdatesAutomaticallytrue

但是,如果您将其设置为true,那么如果您的司机停留在某个位置太长时间(我不知道什么意思太长),那么该应用会完全停止跟踪位置,直到您再次将应用程序带到前台。我的意思是基于:

  

重要信息对于具有使用中授权的应用,暂停到位置   在后台更新结束访问位置更新,直到   应用程序返回到前台,并能够重新启动位置   服务。如果您不希望位置更新完全停止,   考虑禁用此属性并将位置准确性更改为   kCLLocationAccuracyThreeKilometers当你的应用程序移动到   背景。这样做可以让您继续接收位置更新   以友好的方式。

所以这有点棘手。您可能希望将pausesLocationUpdatesAutomatically设置为true,但如果您的业务要求允许...在应用程序在后台运行1小时后执行类似stopUpdatingLocation() 的操作以完全停止位置更新。

答案 1 :(得分:0)

是的,这是可能的。

  

如果您的iOS应用程序必须在后台保持监控位置,请使用标准位置服务并指定UIBackgroundModes键的位置值以继续在后台运行并接收位置更新。 (在这种情况下,您还应确保位置管理器的pausesLocationUpdatesAutomatically属性设置为YES以帮助节省电量。)可能需要此类位置更新的应用程序示例是健身或精细导航应用程序。

有关详细信息,请查看Location and Maps Programming Guide