didEnterRegion 被多次触发

Posted

技术标签:

【中文标题】didEnterRegion 被多次触发【英文标题】:didEnterRegion gets triggered many times 【发布时间】:2012-12-25 04:51:47 【问题描述】:

由于某些奇怪的原因,有时当我进入一个区域时,didEnterRegion 会被触发多达 10 次。有谁知道发生这种情况的可能原因是什么?我知道如果我在边界上可能会发生这种情况,但也许 Apple 的智能逻辑不会在这些点触发。

这是怎么回事??

【问题讨论】:

【参考方案1】:

我已经看到,当您实例化 CLLocationManager 的多个实例时。假设您有多个需要使用位置的类,您在应用程序生命周期中分配/初始化位置管理器 4-5 次......它们都在监听委托方法。

那么,如果我只有 4-5 个实例,为什么我会收到 10 个回调?很高兴你问。 :p 我相信 Apple 的区域监控委托方法中存在一个错误,该方法会为每个实例触发两次。

解决方案是为位置管理器委托创建您自己的单例类,并将位置管理器的一个实例用于整个应用程序。这将阻止您获得 4-5 x 2 回调。那么你只会像其他人一样得到 2 个。

如果您愿意提供帮助,请在我对这个问题的回答中复制雷达,以便我们可以让 Apple 彻底解决问题。

why the didEnterRegion called twice ?

【讨论】:

ios7.1 行为正常吗?

以上是关于didEnterRegion 被多次触发的主要内容,如果未能解决你的问题,请参考以下文章

CoreLocation startMonitoringRegion 未触发 didenterregion /didexitregion 代表

iOS Beacon Monitoring - didEnterRegion 仅在受监控区域触发 didExitRegion 后调用

didEnterRegion 仅在设备唤醒时触发

didEnterRegion 方法仅针对最近的区域触发

locationManager:didEnterRegion:在没有位置更改的情况下触发

对于具有不同 UUID、major 和 minor 的多个 iBeacon,仅触发一次 didEnterRegion 事件