什么是CoreLocation的区域监控系统定义缓冲?

时间:2014-01-23 00:30:00

标签: ios monitoring cllocationmanager region

我正在使用模拟器来测试区域监控。使用CoreLocation区域监控和模拟器中的高速公路驾驶测试位置路径(调试>位置>高速公路驾驶)我能够模拟,至少在视觉上与高速公路道路相交的路径覆盖。一旦我开始监控用户的位置,这些覆盖就会转换为区域并进行监控。无论如何,这似乎不太好用。当我们“想”它们时,由我的叠加层表示的区域不会导致didEnter / didExit事件。这些区域的大小似乎比我指定的距离宽得多。我猜这是因为系统适用的缓冲。

Apple的Region Monitoring documentation声明:

  

在超出边界加上系统定义的缓冲距离之前,系统不会报告边界交叉。此缓冲值可防止系统在用户靠近边界边缘时快速连续生成大量已进入和退出的事件。

文档似乎并没有说明这个缓冲是什么。也不算如何计算。有谁知道系统定义的缓冲是什么?

1 个答案:

答案 0 :(得分:4)

我认为它是200米。在Region Monitoring文档的底部有一段松散地解释如何测试的段落:

  

在iOS模拟器或设备上测试区域监控代码时,请注意区域事件可能不会在跨越区域边界后立即发生。为防止虚假通知,iOS在满足某些阈值条件之前不会发送区域通知。具体而言,用户的位置必须越过区域边界并远离该边界移动最小距离,并在报告通知之前保持最小距离至少20秒。

     

特定阈值距离由当前可用的硬件和定位技术决定。例如,如果禁用Wi-Fi,则区域监控的准确性要低得多。 但是,出于测试目的,您可以假设最小距离约为200米。