【发布时间】:2014-12-29 23:06:09
【问题描述】:
我需要在特定时间在后台跟踪用户的位置。后台任务可以在例如晚上 7 点到 11 点开始吗?
到目前为止,我能够实现这一目标的唯一方法是让后台任务持续运行,这似乎是一种不好的方法,因为它会大量消耗电池电量。
我已设置 CLLocation 管理器的精度和距离过滤器,以便在这些时间之外节省电池:
[locationManager setDesiredAccuracy:kCLLocationAccuracyThreeKilometers];
[locationManager setDistanceFilter:2000.0f];
然后我在晚上 7 点到 11 点之间将其改回:
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[locationManager setDistanceFilter:10.0f];
我已关闭 locationManager.pausesLocationUpdatesAutomatically,因为当用户静止 15-20 分钟时,这似乎会终止后台任务 - 当用户再次移动时它不会恢复。
有没有更好的方法来减少这些时间之外的电池消耗。
另外,我认为 startMonitoringSignificantLocationChanges 仅在您移动超过 500m 时才更新位置是否正确 - 如果是这种情况,它在晚上 7 点到 11 点期间不够准确。
有什么想法吗?
【问题讨论】:
标签: ios objective-c xcode cllocationmanager background-task