即时通讯使用此功能,但我不知道如何监控超过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);
}
}
答案 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分钟内输入或区域退出通知 平均,如果不是更快。