如何为超过20个地区启动监控区域

时间:2013-06-13 13:47:12

标签: ios xcode core-location locationmanager region

即时通讯使用此功能,但我不知道如何监控超过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);

    }


}

1 个答案:

答案 0 :(得分:2)

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

  

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

     

区域事件被传递到locationManager:didEnterRegion:和   locationManager:didExitRegion:您的委托的方法。如果有   一个错误,位置管理员调用   locationManager:monitoringDidFailForRegion:withError:你的方法   代替。

     

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

     

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

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