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

How to run CLLocationManager in a specific period of time

我已阅读 this 和许多其他问题。我了解到无法在特定时间从后台将任务安排到 运行。

我的应用程序使用 CLVisit api 向服务器发送位置信息。但是我希望用户能够select一个时间范围发送his/hercheck-insstopMonitoringVisits()startMonitoringVisits() 在特定时间从后台有什么不同的方法吗?我的应用是否应该在收到 didVisit 电话后始终监控并决定发送位置?

同样的问题可以问 startMonitoringSignificantLocationChanges()

只要访问监控完全满足您的应用程序的需求,请始终保持监控并在处理 didVisit 回调时决定适当的处理(是否应向服务器报告位置)。

您不会以这种方式对电池造成任何明显的压力,因为访问跟踪对电池非常友好,而且 iOS 默认情况下无论有没有您的应用程序都会运行这种监控。

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

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