如果应用程序使用GPS,即使应用程序处于后台,如何避免电池耗尽

时间:2015-08-12 11:13:29

标签: ios swift parsing core-data geolocation

我必须构建一个具有以下功能的应用: -

  1. 在数据库中添加用户及其数据的方法。 (将解析)
  2. 该应用程序将访问用户的位置更新(例如每10分钟后或用户移动了很长的距离)。即使应用程序处于后台,也会执行此操作。然后,当收到新位置时,这些位置将更新到解析数据库。
  3. 我是初学者,所以对我应如何处理此问题的任何建议都将不胜感激。最重要的是,我有以下问题: -

    1. 该应用也将在后台运行,并会定期使用GPS。这将耗尽大量电池。我怎么能避免这个? (位置的精确度很重要)

    2. 该应用会定期将这些位置更新到解析数据库,并且必须定期发出API请求,这会增加成本。我怎样才能最大限度地减少这种情况?

2 个答案:

答案 0 :(得分:2)

根据您的描述,您想要的是“重要位置变更”监控,该监控内置于CLLocationManager。您可以告诉位置管理员向您发送“重大”位置更改,即当用户移动了一些未记录的“重要”金额时,而不是运行连续的位置更新。它专门设计用于最大限度地减少电池消耗,因此您无需打扰禁用和重新启用它。相反,iOS会确保您使用尽可能少的电池来获取更新。

CLLocationManager详细讨论了这种方法,但基本知识是:

  • 创建位置管理员后,请告知其开始重要的位置更新:

    locationManager.startMonitoringSignificantLocationChanges()
    
  • 通过用于连续位置更新的相同locationManager(manager:didUpdateLocations:)方法向代表提供位置更改。

  • iOS会唤醒您的应用以让它处理位置更新。

答案 1 :(得分:1)

您需要定期更新您的位置,而不是连续打开GPS。 Here's a tutorial covering CLLocationManager您可能会觉得有帮助。

如果没有具体的代码,我无法给出具体的答案,但一般来说,您需要定期开启CLLocationManager,获取您的位置,然后再将其关闭,直到下次更新为止。您还可以配置CLLocationManager的准确度 - 您的位置越具体,电池电量就越大。

Here's another tutorial on CLLocationManager也可以看一眼。