之间切换。位置经理&区域监测

时间:2014-04-14 15:56:25

标签: ios core-location cllocationmanager geofencing clregion

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

  1. 在他/她移动时以最高精度跟踪用户的位置
  2. 使用尽可能少的电量,以便用户不会感到需要关闭应用程序(关闭它的位置服务),而他们没有使用它
  3. 我知道这两个要求通常是相互排斥的:)所以一般的问题是"这里最好的策略是什么?"

    我的想法是尽可能以最高的准确度进行监控,同时位置变化不断进入。如果我们检测到这些位置更新之间的差值在一段时间内几乎变为0,我们会认为用户不是"移动"再进行并切换到区域监测(半径为40米)。一旦用户退出该区域,我们就会切换回常规位置监控。

    所以有两个问题:

    1. 您能告诉我建议的方法是否适用于在后台运行的应用程序?
    2. 您是否可以实施类似的功能并知道它是否真的可以节省大量电池电量?
    3. 此致

      塞巴斯蒂安

1 个答案:

答案 0 :(得分:0)

  

我的想法是尽可能以最高的准确度进行监控,同时位置变化不断进入。如果我们检测到这些位置更新之间的差值在一段时间内几乎变为0,我们会认为用户不是“在移动中”,并将切换到区域监控(半径为例如40米)。一旦用户退出该区域,我们就会切换回常规位置监控。

使用区域监控重新参与位置监控有一些缺点,that I have found

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

所以,回答你的问题:

  

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

在后台运行此类事情应该不会有任何问题。如果您将应用程序设置为背景,则位置监控和区域监控都可以正常工作。此外,确保区域监控适用于iOS 7 you must have Background App Refresh turned on for your app。这让我感到高兴。

  

您是否可以实施类似的功能,并知道它是否真的可以节省大量电池电量?

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