Мониторинг региона iPhone - регионы не добавлены?
-
12-10-2019 - |
Вопрос
Я пытаюсь настроить мониторинг региона. Выглядит довольно просто; Но когда я проверяю количество регионов, которые я контролирую, счет всегда 0.
Код:
if ([CLLocationManager regionMonitoringAvailable] &&
[CLLocationManager regionMonitoringEnabled] ) {
CLLocationCoordinate2D coordinate;
double radius;
for(Item *item in ad.proxiArray) {
radius = [item.distance floatValue];
coordinate= CLLocationCoordinate2DMake([item.latitude doubleValue],
[item.longitude doubleValue]);
CLRegion *region = [[CLRegion alloc] initCircularRegionWithCenter:coordinate radius:radius identifier:item.place];
NSLog(@"Adding: %@", region);
[self.locationManager startMonitoringForRegion:region desiredAccuracy:kCLLocationAccuracyNearestTenMeters];
[region release];
}
NSLog(@"region count %i",[[self.locationManager monitoredRegions] count]);
for (CLRegion *re in [self.locationManager monitoredRegions]) {
NSLog(@"Monitoring: %@", re);
}
} else {
NSLog(@"Region monitoring unavailable");
}
При запуске NSLOG покажет, что я на самом деле добавляю все элементы (около 10). Но в конце петли, как указано выше:
2010-12-21 12: 14: 38.172 XXXXXX [8112: 307] Количество регионов 0
Что случилось????
Решение
Мое впечатление в том, что
- CllocationManager сам по себе не является нитью. Мониторинг региона и мониторинг местоположения будут мешать и иногда может привести к блокам (от моего наблюдения должно быть своего рода тайм -аут, так как программа продолжает работать через чуть более 30 секунд)
- Регионы будут добавлены асинхронно, тем самым проверяя количество регионов непосредственно, когда они закончат, добавляя их, может привести к неправильному результату.
- Точность очень плохая (разрешение на несколько км), когда регионы фактически добавляются, чтобы их можно было отслеживать
Из -за этих проблем и того факта, что мониторинг региона не очень точен, я отказался от идеи использования этой функции.
Не связан с StackOverflow