iOS 7 后台定位更新精度高、电池使用率低且禁用暂停
Posted
技术标签:
【中文标题】iOS 7 后台定位更新精度高、电池使用率低且禁用暂停【英文标题】:iOS 7 Background Location updates high accuracy, low battery usage with pausing disabled 【发布时间】:2014-03-07 23:58:12 【问题描述】:我正在开发一个应用程序,该应用程序会在用户进入或离开时通知用户预定义的位置。一个位置的跨度可以低至 50 米,因此它需要相当准确和规则。位置更新当前被发送到服务器,服务器确定用户是否在位置区域内并相应地发送通知。
我们的问题是ios 7 更改位置暂停已经成为一个主要问题。该应用程序仍处于打开状态(在应用程序切换器中),但 15 分钟后在重新打开该应用程序之前不会再收到位置更新。但是需要通知用户他们输入的所有未来位置。使用“setPausesLocationUpdatesAutomatically”方法禁用暂停会导致 GPS 不断启用,无论定义的活动类型如何。
我很确定我几乎用尽了所有可用的方法来满足所有要求。在 iOS 7 之前,我们的应用运行良好。电池寿命是可以接受的(我知道它永远不会是完美的),在每日充电周期中,但我们需要对其进行一些改进。
以下是我们目前解决方案的简要介绍:
保留位置的本地副本并使用 CLLocationManager 区域注册它们。不幸的是,我们发现这种方法的准确性非常差,并且进入/退出方法被调用太晚而无法使用 自定义位置模型;最初使用重要的位置更新,当用户移动 x 米时切换到标准位置更新。但重要的位置更新仅每 500 米和每 5 分钟提供一次 与上述类似,除了使用加速度计启用基于多个步骤的位置更新。但加速度计数据在后台状态下不可用 从有限运行的后台任务中每 3 分钟打开一次位置更新 - 这可行,但我不确定无论其他情况如何,每 3 分钟一次是否会过多地影响电池寿命 另一个想法是依靠 Passbook 发送通知,虽然没有经过测试。根据经验,它更可靠。当然,这是一个相当大的变化,我们还没有测试过。在准确性和可靠性方面,我们正在努力实现的一个经典示例是 Moves。我经常使用它,它始终处于活动状态,并且电池寿命可以持续一整天。
基本上我是在问是否有人使用过我提到的任何解决方案或有任何其他可行的解决方案或配置?
我非常希望有人能影响我现有的解决方案之一,甚至提供一个新的、可行的解决方案,因为我不确定还有很多其他事情可以做。
非常感谢任何阅读本文的人。
【问题讨论】:
【参考方案1】:对于您的任务(每 50m 定位一次),您需要永久 GPS。 每隔几分钟禁用重新启用是没有意义的。
您需要设置CLLocationAccuracyBest
或accuracyBestForNavigation
。
但请注意:accuracyBestForNavigation 可能会启用加速度传感器,请阅读文档CLLocationAccuracyBestForNavigation
所以在你的情况下,我会使用CLLocationAccuracyBest
。 (避免不必要地启用传感器)
考虑您是否需要在后台使用 GPS,或者让用户决定您的应用是永久运行还是仅在前台运行。
在 ios6 上,我的应用可以运行 8 小时的永久 GPS 记录。 (如果您禁用了第 3 方消息服务,并且不要一直玩显示器。)
在 ios7 上,这并没有改变:我现在有 8 小时的时间永久记录每秒一次修复,并且剩余 41% 的电池电量。所以你的ios7问题不是GPS电池消耗引起的。
【讨论】:
我很确定打开位置更新并保持打开状态,但调整配置并不是我想要的解决方案。这些配置设计用于使用的唯一方法是使用当前正在充电的设备。我的想法是,在 iOS 6 之前,CLLocationAccuracyBest 准确度已经过优化,因此用户可以使用一整天的电量。但是随着 iOS 7 中的位置暂停配置(我知道它可用 6+,但似乎没有完全生效),他们已经删除了部分甚至全部优化,因为电池寿命大大缩短。 如果“一个位置的跨度可以低至 50 米,那么”我可以向您保证,除了永久保持 GPS 一直处于开启状态之外,别无选择。没有 30% 或 50% 的 GPS。无论是 0% 还是 100% GPS,两者之间都没有。通过 GSm 小区 ID 的网络定位精度约为 1000m,通过 Wlan 的网络定位取决于 Apple 数据库中的 Wlan 接入点的密度。测量你现在可以使用完整的 GPS 运行多少小时,并在此处发布,我也会测量,并将其发布在此处作为评论。确保禁用所有社交应用程序和 Messenger。 我现在测量了ios7 GPS的电池消耗。它与 iso5-6 中的完全相同;我有 7:20h 每秒记录一个位置,剩余电量为 51%。所以你的问题在别处,不是由 GPS 引起的。 11.5h 后电池电量下降到 7%,所以限制有点低于 12h。 我的测量证明你的想法是不正确的:“我的想法是在 iOS 6 之前,CLLocationAccuracyBest 的准确性得到了优化”。您还有另一个问题,不是基于定位服务,可能通信部分现在使用更多电池。以上是关于iOS 7 后台定位更新精度高、电池使用率低且禁用暂停的主要内容,如果未能解决你的问题,请参考以下文章