This also happens if you:
stop monitoring the area
[self.manager stopMonitoringForRegion:region]
and immediately request a status for all controlled regions:
for (CLRegion *region in self.manager.monitoredRegions) { [self.manager requestStateForRegion:region]; }
you get kCLErrorDomain 5 because IOS seems to have disabled monitoring for this region but not removed it from the monitoredRegions array yet
monitoringDidFailForRegion CLCircularRegion (identifier:'Home', center:<...>, radius:102.00m) The operation couldn't be completed. (kCLErrorDomain error 5.) monitoredRegion: CLCircularRegion (identifier:'Home', center:<...>, radius:102.00m) monitoredRegion: CLBeaconRegion (identifier:'BeaconHome', uuid:<..., major:(null), minor:(null)) monitoredRegion: CLCircularRegion (identifier:'D...', center:<...>, radius:101.00m) monitoredRegion: CLCircularRegion (identifier:'W...', center:<..>, radius:51.00m)
To work around this issue, follow these steps:
- (void)locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *)region withError:(NSError *)error { NSLog(@"monitoringDidFailForRegion %@ %@",region, error.localizedDescription); for (CLRegion *monitoredRegion in manager.monitoredRegions) { NSLog(@"monitoredRegion: %@", monitoredRegion); } if ((error.domain != kCLErrorDomain || error.code != 5) && [manager.monitoredRegions containsObject:region]) { NSString *message = [NSString stringWithFormat:@"%@ %@", region, error.localizedDescription]; [AlertView alert:@"monitoringDidFailForRegion" message:message]; } }
source share