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

Posted

技术标签:

【中文标题】didEnterRegion 方法仅针对最近的区域触发【英文标题】:didEnterRegion Method only Fires for Most Recent Region 【发布时间】:2014-02-21 07:41:40 【问题描述】:

我正在尝试在我的应用程序中使用 ios didEnterRegion 方法。我有一个将用户传递给 profileViewController 的 tableView。在 profileViewController 的 viewDidLoad 方法中,我有一组纬度和经度坐标,我将它们存储为一个区域,然后我开始监视该区域。

此代码有效,但 didEnterRegion 方法仅在加载的最后一个配置文件时触发。例如,如果我查看配置文件 A 并开始监视配置文件 A 的区域,然后查看配置文件 B,只有当我进入配置文件 B 的区域时才会触发 didEnterRegion。

有谁知道可能出了什么问题?谢谢!

下面是 profileViewController 的 viewDidLoad 方法中的代码:

NSString *latOne = placeLatitude;
NSString *lngOne = placeLongitude;
NSString *radiusOne = @"100";

CLLocationDegrees latTwo = [latOne doubleValue];
CLLocationDegrees lngTwo =[lngOne doubleValue];
CLLocationDistance radiusTwo = [radiusOne doubleValue];

CLLocationCoordinate2D coordinates = CLLocationCoordinate2DMake(latTwo, lngTwo);
CLRegion *grRegion = [[CLRegion alloc] initCircularRegionWithCenter:coordinates 
radius:radiusTwo identifier:[NSString stringWithFormat:@"grRegion%i", 1]];

[locationManager startMonitoringForRegion:grRegion];

我的 didEnterRegion 也在 profileViewController 中

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region 

    //local notification code is in here

【问题讨论】:

【参考方案1】:

设置为位置管理器委托的视图控制器将实现/响应 didEnter/didExit,我建议您使用位置管理器的单例模式(或共享实例)并设置 de 委托正确。带有多个位置管理器的多个视图控制器可能会导致问题。

【讨论】:

以上是关于didEnterRegion 方法仅针对最近的区域触发的主要内容,如果未能解决你的问题,请参考以下文章

区域监控 - didEnterRegion

didEnterRegion 信标管理器方法返回一个主要和次要为零的区域

iOS 8 中的 didEnterRegion - 区域监控

iBeacon - 可以使用 startRangingBeacons 进行检测,但不能用于 didEnterRegion

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

iOS / Beacon:重置 didEnterRegion 可能吗?