如何在特定时间段内运行 CLLocationManager
Posted
技术标签:
【中文标题】如何在特定时间段内运行 CLLocationManager【英文标题】:How to run CLLocationManager in a specific period of time 【发布时间】:2016-05-13 14:16:33 【问题描述】:我已经阅读了this 和许多其他问题。我了解到,无法安排任务在特定时间从后台运行。
我的应用程序使用CLVisit
api 将位置信息发送到服务器。但我希望用户能够选择一个时间范围来发送他/她的签到。在特定时间从背景到stopMonitoringVisits()
和startMonitoringVisits()
有什么不同的方法吗?我的应用是否应该在收到didVisit
呼叫后始终监控并决定发送位置?
同样的问题可以问startMonitoringSignificantLocationChanges()
【问题讨论】:
【参考方案1】:只要访问监控完全符合您的应用程序的需求,请保持监控始终开启,并在处理 didVisit 回调时决定适当的处理方式(是否应向服务器报告位置)。
您不会以这种方式对电池造成任何明显的压力,因为访问跟踪对电池非常友好,而且无论您的应用程序是否存在,ios 都会默认运行这种监控。
此外,任何试图采用旨在规避供应商推荐甚至 API 设计强制执行的良好做法的“智能”技巧的任何尝试,都不可避免地会导致“不良做法”,在您的情况下,这很可能会带来额外的电池消耗。
始终开启监控的唯一不利影响是状态栏中的实心箭头,许多“受过教育”的 iPhone 用户认为这是高电池使用率的标志。如果这是主要问题,并且如果您的用例涉及相当多的时间跨度(例如,离开办公室和家庭位置),您可以尝试使用静默推送通知在合适的时间激活监控。
【讨论】:
您的意思是获得静默推送回调(处于挂起/后台状态),您可以startLocationUpdates
?OK。在那一刻,您是否可以跟踪 180 秒,或者如果您在 plist 中设置了定位服务并且allowsBackgroundLocationUpdates
设置为true
,则可以无限期跟踪?以上是关于如何在特定时间段内运行 CLLocationManager的主要内容,如果未能解决你的问题,请参考以下文章