我有一个应用程序用于跟踪面包车司机。我需要能够每隔30秒左右获取位置(x & y)。我有一个方法和一个计时器,可以让我做到这一点。Swift 3 - 时刻检查位置
我在想如何(如果可能的话),我可以让这个工作,无论该应用程序是否活动?
我有一个应用程序用于跟踪面包车司机。我需要能够每隔30秒左右获取位置(x & y)。我有一个方法和一个计时器,可以让我做到这一点。Swift 3 - 时刻检查位置
我在想如何(如果可能的话),我可以让这个工作,无论该应用程序是否活动?
是的,这是可能的。
如果您的iOS应用必须随时监控即使它在后台的位置,使用标准定位服务,并指定UIBackgroundModes键的位置值继续在后台运行并接收位置更新。 (在这种情况下,您还应确保位置管理器的pausesLocationUpdatesAutomatically属性设置为YES,以帮助节省电量。)可能需要此类位置更新的应用的示例是健身或转由转动的导航应用。
欲了解更多信息,检查出Location and Maps Programming Guide。
我最近开始乱搞核心位置,所以我的知识我不是防弹的。
如果应用程序是仍然活跃但只在后台,然后只要你设置allowsBackgroundLocationUpdates
到true
那么你将得到更新。但这可能会耗费电池,直到电池耗尽才会继续。
您可能要避免不断检查位置设置: pausesLocationUpdatesAutomatically
到true
。
但是如果你把它设置为true
那么如果你的驾驶停在太长的位置(我不知道是什么意思太长),那么应用程序将完全跟踪的位置,直到你把应用前景停止再次。我是说,基于:
重要对于有在使用授权,暂停向位置 更新,同时在后台结束访问位置更新,直到 应用程序返回到前台应用程序和能够重新启动位置 服务。如果您不希望位置更新完全停止, 考虑禁用此媒体资源并将位置精确度更改为 kCLLocationAccuracyThreeKilometers,当您的应用移动到 背景时。这样做可让您继续以电源友好的方式接收位置更新 。
所以这有点棘手。您可能需要将pausesLocationUpdatesAutomatically
设置为true,但如果您的业务需求允许,请执行以下操作:stopUpdatingLocation()
在应用程序的1小时后台之后完全停止位置更新。