如何运行 CLLocationManager 在特定的时间段
How to run CLLocationManager in a specific period of time
我已阅读 this 和许多其他问题。我了解到无法在特定时间从后台将任务安排到 运行。
我的应用程序使用 CLVisit
api 向服务器发送位置信息。但是我希望用户能够select一个时间范围发送his/hercheck-ins。 stopMonitoringVisits()
和 startMonitoringVisits()
在特定时间从后台有什么不同的方法吗?我的应用是否应该在收到 didVisit
电话后始终监控并决定发送位置?
同样的问题可以问 startMonitoringSignificantLocationChanges()
只要访问监控完全满足您的应用程序的需求,请始终保持监控并在处理 didVisit 回调时决定适当的处理(是否应向服务器报告位置)。
您不会以这种方式对电池造成任何明显的压力,因为访问跟踪对电池非常友好,而且 iOS 默认情况下无论有没有您的应用程序都会运行这种监控。
此外,任何尝试采用一些 "smart" 技巧来规避供应商推荐甚至 API 设计强制执行的良好做法,都不可避免地会导致 "bad practices",在您的情况下,这很可能会带来额外的电池消耗。
始终保持监控的唯一不利影响是状态栏中的实线箭头,许多 "educated" iPhone 用户将其视为电池使用率高的标志。如果这是主要问题,并且如果您的用例涉及相当多的时间跨度(例如,离开办公室和家庭位置),您可以尝试使用静默推送通知在适当的时间激活监控。
我已阅读 this 和许多其他问题。我了解到无法在特定时间从后台将任务安排到 运行。
我的应用程序使用 CLVisit
api 向服务器发送位置信息。但是我希望用户能够select一个时间范围发送his/hercheck-ins。 stopMonitoringVisits()
和 startMonitoringVisits()
在特定时间从后台有什么不同的方法吗?我的应用是否应该在收到 didVisit
电话后始终监控并决定发送位置?
同样的问题可以问 startMonitoringSignificantLocationChanges()
只要访问监控完全满足您的应用程序的需求,请始终保持监控并在处理 didVisit 回调时决定适当的处理(是否应向服务器报告位置)。
您不会以这种方式对电池造成任何明显的压力,因为访问跟踪对电池非常友好,而且 iOS 默认情况下无论有没有您的应用程序都会运行这种监控。
此外,任何尝试采用一些 "smart" 技巧来规避供应商推荐甚至 API 设计强制执行的良好做法,都不可避免地会导致 "bad practices",在您的情况下,这很可能会带来额外的电池消耗。
始终保持监控的唯一不利影响是状态栏中的实线箭头,许多 "educated" iPhone 用户将其视为电池使用率高的标志。如果这是主要问题,并且如果您的用例涉及相当多的时间跨度(例如,离开办公室和家庭位置),您可以尝试使用静默推送通知在适当的时间激活监控。