顺便说一句,切换。位置管理器和区域监控



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

  1. 在用户移动时,以尽可能高的精度跟踪用户的位置
  2. 尽可能少用电,这样用户在不使用应用程序时就不会觉得有必要关闭应用程序(关闭定位服务)

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

我的想法是在位置不断变化的情况下,像往常一样以最高的精度进行监控。如果我们检测到这些位置更新之间的差值在一段时间内几乎为0,我们会假设用户不再"移动",并将切换到区域监控(半径为40米)。一旦用户退出该区域,我们就会切换回常规的位置监控。

所以有两个问题:

  1. 你能告诉我提议的方法是否适用于在后台运行的应用程序吗
  2. 你有没有实施过类似的措施,知道它是否真的节省了很多电池电量

问候,

Sebastian

我的想法是在位置不断变化的情况下,像往常一样以最高的精度进行监控。如果我们检测到这些位置更新之间的差值在一段时间内几乎为0,我们会假设用户不再"移动",并将切换到区域监控(半径为40米)。一旦用户退出该区域,我们就会切换回常规的位置监控。

使用区域监控来重新参与位置监控有一些缺点,我发现:

如果你为用户的当前位置设置了一个区域,然后等待-didExitRegion开火,你将依赖于系统的默认半径缓冲(可能是200米)和他们越过边界后的一段时间(可能是20秒),然后你才会收到消息。如果准确度是你的主要目标,那么在开始区域监控和离开区域之间,你可能会丢失很多数据点。这能满足你的需要吗?

因此,为了回答您的问题:

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

在后台运行这种类型的东西应该不会有任何问题。如果您已将应用程序设置为后台,则位置监控和区域监控都可以工作。此外,为了确保区域监控在iOS 7上工作,您必须为应用程序打开后台应用程序刷新。那把我绊倒了。

你有没有实施过类似的措施,知道它是否真的节省了很多电池电量?

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

相关内容

  • 没有找到相关文章

最新更新