2016-05-13 32 views
2

我读过this以及其他许多问题。我了解到,无法在特定时间安排任务从后台运行。如何在特定时间段内运行CLLocationManager

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

同样的问题可以问startMonitoringSignificantLocationChanges()

回答

3

只要访问监控不正是你的应用需求,保持监测总是和正确的处理决定(是否应报告位置服务器)处理didVisit回调时。

这种方式不会给电池带来任何明显的压力,因为访问跟踪非常电池友好,iOS默认运行那种监控,无论您是否使用您的应用。此外,任何试图采用一些旨在规避供应商推荐的良好实践并且甚至由API设计实施的“巧妙”技巧的尝试都不可避免地导致“不良实践”,这在您的案例中很可能会带来额外的电池消耗。

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

+0

你的意思是得到一个无声的推回调(在暂停/后台状态),你可以'startLocationUpdates'?好的。那么你是否允许追踪180秒,或者如果你在plist中设置了位置服务并且'allowBackgroundLocationUpdates'设置为'true',它将无限期地运行? – Honey

相关问题