我正在开发一个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
一次。
有谁知道我所看到的行为是否可以预期,或者我是否做错了什么?
答案 0 :(得分:0)
好吧,我修好了,但我不知道是什么造成的。
我在单个viewcontroller上拥有所有区域监视逻辑,包括CLLocationManagerDelegate方法。我将它全部移动到一个单独的单例中,我在AppDelegate上保留了一个引用并使用通知来允许viewcontroller更新视图,现在一切正常。