如何在特定时间段内运行CLLocationManager

时间:2016-05-13 14:16:33

标签: ios core-location cllocationmanager background-process

我已阅读this以及其他许多问题。我了解到没有办法安排任务在特定时间从后台运行。

我的应用程序使用CLVisit api将位置信息发送到服务器。但我希望用户能够选择一个时间范围来发送他/她的签到。在特定时间从背景到stopMonitoringVisits()startMonitoringVisits()是否有任何不同的方式?我的应用程序是否应始终监控并决定在收到didVisit电话后发送该位置?

startMonitoringSignificantLocationChanges()

可以提出同样的问题

1 个答案:

答案 0 :(得分:3)

只要访问监控完全符合您的应用所需,就应始终保持监控,并在处理didVisit回调时决定是否应该正确处理(是否应该向服务器报告位置)。

您不会以这种方式对电池施加任何明显的压力,因为访问跟踪非常适合电池使用,并且iOS默认情况下会在您的应用程序中运行或不使用您的应用程序进行监控。

此外,任何试图采用一些旨在规避供应商推荐甚至API设计强制执行的良好实践的“智能”技巧的尝试都不可避免地导致“不良做法”,在您的情况下,这种做法很可能带来额外的电池消耗。

始终保持监控的唯一不利影响是状态栏中的实线箭头,这被许多“受过良好教育”的iPhone用户视为高电量使用的标志。如果这是主要问题,并且如果您的用例涉及相当多的时间跨度(例如,离开办公室和家庭位置),您可以尝试使用静默推送通知在适当的时间激活监控。