didExitRegion仅在进入不同区域时调用

时间:2013-10-17 08:21:15

标签: ios ios7 core-location cllocationmanager geofencing

我正在开发一个iOS 7应用程序,它在路线上指定一组5个区域,并在进入或退出某个区域时发送通知。
这些区域是圆形的,半径为1km,它们不相邻,但它们之间有几公里的空间。有点像这样(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.,但我认为这仍然意味着应该在退出某个区域时触发事件。

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

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

1 个答案:

答案 0 :(得分:0)

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

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