1

我正在使用它,但我不知道如何监控超过 20 个区域,因为它在 ios 中的最大区域数可以监控

if ([AllRegionsArray count] > 0) {


    for (int i = 0; i < [AllRegionsArray count]; i++) {
        NSArray *LongLati = [AllRegionsArray objectAtIndex:i];
        lutiuid = [LongLati objectAtIndex:0];
        Longtuid = [LongLati objectAtIndex:1];

        CLLocationCoordinate2D centreLoc = {[lutiuid floatValue], [Longtuid floatValue]};
        CLLocationDistance regionRadius = 150.00;
        CLRegion *grRegion = [[CLRegion alloc] initCircularRegionWithCenter:centreLoc radius:regionRadius identifier:[NSString stringWithFormat:@"grRegion%i",i]];

        [locationManager startMonitoringForRegion:grRegion desiredAccuracy:acc];

        NSLog(@"Mon = %i , %i",[locationManager.monitoredRegions count],i);

    }


}
4

1 回答 1

2

您不能监控超过 20 个区域。也许您可以根据用户位置停止监视某些区域并启动其他一些区域(取决于您的用例)。

讨论 对于要监控的每个区域,您必须调用一次此方法。如果应用程序已经在监视具有相同标识符的现有区域,则旧区域将被新区域替换。您使用此方法添加的区域由应用程序中的所有位置管理器对象共享,并存储在受监控的区域属性中。

区域事件被传递到你的委托的 locationManager:didEnterRegion: 和 locationManager:didExitRegion: 方法。如果出现错误,位置管理器会调用您委托的 locationManager:monitoringDidFailForRegion:withError: 方法。

一个应用程序一次最多可以注册 20 个区域。为了及时报告区域变化,区域监控服务需要网络连接。

在 iOS 6 中,半径在 1 到 400 米之间的区域在 iPhone 4S 或更高版本的设备上效果更好。(在 iOS 5 中,半径在 1 到 150 米之间的区域在 iPhone 4S 和更新版本的设备上效果更好。)在这些设备上,应用程序可以期望在平均 3 到 5 分钟内收到相应的区域进入或区域退出通知,如果不早点。

https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html#//apple_ref/occ/instm/CLLocationManager/startMonitoringForRegion

于 2014-01-20T14:45:27.167 回答