我需要在特定时间在后台跟踪用户的位置。后台任务可以在例如晚上 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 点期间不够准确。
有任何想法吗?