1

对于作为科学研究一部分的应用程序,我必须实施位置跟踪(参与研究的用户知道这一点并愿意提供这些数据)。这个应用程序的两个前提是:

  1. 在用户移动时以尽可能高的准确度跟踪用户的位置
  2. 使用尽可能少的电量,以便用户在不使用应用程序时不会觉得需要关闭应用程序(为其关闭位置服务)

我知道这两个要求通常相互排斥:) 所以一般的问题是“在这里中间满足的最佳策略是什么?”

我的想法是在位置变化不断出现时以尽可能高的精度进行监控。如果我们检测到这些位置更新之间的增量在一段时间内几乎变为 0,我们会假设用户不是“在move" 并且将切换到区域监控(例如半径为 40m)。一旦用户退出该区域,我们将切换回常规位置监控。

所以两个问题:

  1. 您能否告诉我所提议的方法是否适用于在后台运行的应用程序?
  2. 您是否可能实现了类似的东西并知道它是否真的可以节省大量电池电量?

问候,

塞巴斯蒂安

4

1 回答 1

0

我的想法是在位置变化不断出现时以尽可能高的精度进行监控。如果我们检测到这些位置更新之间的增量在一段时间内几乎变为 0,我们会假设用户不是“在move" 并且将切换到区域监控(例如半径为 40m)。一旦用户退出该区域,我们将切换回常规位置监控。

我发现使用区域监控重新启用位置监控有一些缺点:

如果您为用户的当前位置设置一个区域,然后等待-didExitRegion触发,您将依赖于系统的默认半径缓冲,(可能是 200m)和一段时间(可能是 20 秒)在他们越过边界之后(可能是 20 秒)会收到消息的。如果准确性是您的主要目标,那么您可能会在区域监控开始和跨出该区域之间丢失大量数据点。这可以满足您的需求吗?

所以,回答你的问题:

您能否告诉我所提议的方法是否适用于在后台运行的应用程序?

在后台运行这种类型的东西应该没有任何问题。当应用程序处于后台时,位置监控和区域监控都可以工作,前提是您已将其设置为这样做。此外,为了确保区域监控在 iOS 7 上正常工作,您必须为您的应用打开后台应用刷新。那把我绊倒了。

您是否可能实现了类似的东西并知道它是否真的可以节省大量电池电量?

根据我们的经验,电池节省并不明显。区域监控可能会消耗电池电量,这与高精度位置更新一样重要,因为它使用各种硬件来完成它。所以选择你的毒药。Apple 对节省电池的建议是并且始终是使用重大更改位置服务。它不那么频繁地为您提供良好的位置数据。

于 2014-04-14T16:17:48.667 回答