【问题标题】:Background Location背景位置
【发布时间】: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


    【解决方案1】:

    这是一个很常见的问题,不幸的是,简短的回答是您无法精确控制后台执行的时间和方式。

    关于您的问题,如果startMonitoringSignificantLocationChanges 仅在设备移动约 500 m 时更新也是正确的,它在docs 中说明,您可能已阅读:)

    The significant-change location service delivers updates only when there has been a significant change in the device’s location, such as 500 meters or more.
    

    【讨论】:

    • 谢谢,如果后台任务必须连续运行,关于如何在这些时间之外节省电池的任何想法?
    猜你喜欢
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    • 2011-02-10
    相关资源
    最近更新 更多