0

遇到这个问题后,我担心这个问题不会有答案,但我还是希望。

我已经设置了一些地理围栏(最小的和一个大的)。我正在使用模拟器,我已经输出了大的半径,CLRegion它告诉我半径是围绕某个坐标的 10881.98m,但是当我将地理位置模拟到距该相同某个坐标的 11281.86m 时,它不会触发locationManager:didExitRegion:大区域的委托方法。

虽然大区域不会触发locationManager:didExitRegion:,但我已经确认较小的区域每次都会触发委托方法。这有什么不开火的原因吗?区域周围是否有距离缓冲区?它是否记录在某处?

任何帮助都会很棒。

编辑:通过测试,我需要将半径减少大约 45.28% 才能触发地理围栏。显然这不是一个很好的解决方案,因为它非常不精确,并且违背了地理围栏的整个理念。

4

1 回答 1

0

我的猜测是这是模拟器独有的问题。虽然 CLRegion 在技术上没有缓冲区或填充,但操作系统需要更长的时间才能确定您已物理离开地理围栏区域。在那种大小的栅栏上,我想可能需要更长的时间。在较小的区域,100-200M,我已经看到它需要几分钟的车程,但在触发事件之前很容易 300-400M。根据 Apple 工程师在 WWDC 2013 上告诉我的内容,操作系统会花时间确定您是否离开。系统也更难确定您离开了,因为它依赖于蜂窝塔三角测量和已知的 wifi 网络。它需要远远超出已知网络才能安全地触发退出事件。

我知道这不是一个确切的答案,但希望你能更多地了解它们是如何工作的,以及 Apple 对它们的期望是什么。祝你好运。

于 2013-09-11T23:00:44.540 回答