2017-04-24 22 views
0

我有一个应用程序用于跟踪面包车司机。我需要能够每隔30秒左右获取位置(x & y)。我有一个方法和一个计时器,可以让我做到这一点。Swift 3 - 时刻检查位置

我在想如何(如果可能的话),我可以让这个工作,无论该应用程序是否活动?

回答

0

是的,这是可能的。

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

欲了解更多信息,检查出Location and Maps Programming Guide

1

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

如果应用程序是仍然活跃只在后台,然后只要你设置allowsBackgroundLocationUpdatestrue那么你将得到更新。但这可能会耗费电池,直到电池耗尽才会继续。

可能要避免不断检查位置设置: pausesLocationUpdatesAutomaticallytrue

但是如果你把它设置为true那么如果你的驾驶停在太长的位置(我不知道是什么意思太长),那么应用程序将完全跟踪的位置,直到你把应用前景停止再次。我是说,基于:

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

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