The significant location change is only for devices with a cellular chip (iPhones, iPads with cellular). It uses the cell towers to check for significant movement.
If you try to use startMonitoringSignificantLocationChanges
on an iPod Touch, it will just fail silently. It won't ever ask the users to allow location services. It won't even invoke the locationManager:didFailWithError:
method.
The best thing to do it to wrap your call in a check using +significantLocationChangeMonitoringAvailable
locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];
if ([CLLocationManager significantLocationChangeMonitoringAvailable]) {
[locationManager startMonitoringSignificantLocationChanges];
} else {
NSLog(@"Can't monitor significant location changes");
}