对于作为科学研究一部分的应用程序,我必须实施位置跟踪(参与研究的用户知道这一点,并愿意提供这些数据)。这个应用程序的两个前提是:
我知道这两个要求通常是相互排斥的:)所以一般的问题是"这里最好的策略是什么?"
我的想法是尽可能以最高的准确度进行监控,同时位置变化不断进入。如果我们检测到这些位置更新之间的差值在一段时间内几乎变为0,我们会认为用户不是"移动"再进行并切换到区域监测(半径为40米)。一旦用户退出该区域,我们就会切换回常规位置监控。
所以有两个问题:
此致
塞巴斯蒂安
答案 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对节省电池的建议始终是使用重要的更改位置服务。它不会经常为您提供良好的位置数据。