1

我正在开发一个 iOS 7 应用程序,它指定了一组沿路线的 5 个区域,并在进入或退出一个区域时发送通知。
这些区域是圆形的,半径为 1 公里,它们不相邻,但它们之间有几公里的空间。有点像这样(这O是一个圆形区域和-它们之间的空间):

O----O---O-------O---O-----O---O

我已经在我的车里进行了一些测试,一切似乎都正常,除了一件事。当didExitRegion我实际离开一个区域时不会发生调用,而只有在我进入不同区域时才会调用。事件日志如下所示:

2013-10-17 07:58:56 Entered region A
2013-10-17 08:10:05 Exited region A
2013-10-17 08:10:05 Entered region B
2013-10-17 08:26:15 Entered region C
2013-10-17 08:26:15 Exited region B
2013-10-17 08:51:52 Exited region C
2013-10-17 08:51:52 Entered region D
2013-10-17 09:19:04 Entered region E
2013-10-17 09:19:04 Exited region D

请注意,所有退出事件都与下一个区域的进入事件发生在完全相同的时间。
我一直在重新阅读 API 文档,并且确实注意到了评论Only boundary crossings generate an event.,但我认为这仍然意味着应该在您退出区域的那一刻触发一个事件。

我正在使用具有默认精度 ( ) 的 CLLocationManager并为我正在监视的每个区域kCLLocationAccuracyBest调用一次。startMonitoringForRegion

有谁知道我看到的行为是否可以预期,或者我是否做错了什么?

4

1 回答 1

0

嗯,我修好了,但我不知道是什么原因造成的。

我拥有所有区域监控逻辑,包括单个视图控制器上的 CLLocationManagerDelegate 方法。我把它全部移到了一个单独的单例中,我在我的 AppDelegate 上保留了一个引用,并使用通知来允许视图控制器更新视图,现在一切正常。

于 2013-10-17T16:43:55.393 回答