【问题标题】:didExitRegion only called when entering different regiondidExitRegion 仅在进入不同区域时调用
【发布时间】:2013-10-25 15:17:42
【问题描述】:

我正在开发一个 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. 的评论,但我认为这仍然意味着应该在您退出区域的那一刻触发一个事件。

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

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

【问题讨论】:

    标签: ios ios7 core-location cllocationmanager geofencing


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-12
      • 2015-11-03
      • 2011-05-08
      • 1970-01-01
      • 2014-09-13
      • 2017-09-15
      相关资源
      最近更新 更多