How can I check if the user has allowed location for mu app? Normally I would use authorizationStatus
method of the CLLocationManager
class, but it is only available in iOS 4.2 and newer. Is it possible to achieve this somehow while still using SDK 4.2, so that the app can still run on devices with older versions of iOS, or do I have to downgrade the SDK? And along the same line, I need a similar alternative for the locationServicesEnabled
method prior to iOS 4.0.
The user can enable or disable location services from the Settings app by toggling the Location Services switch in General. You should check the return value of locationServiceEnabled() method before starting location updates to determine whether the user has location services enabled for the current device.
Open your phone's Settings app. Under "Personal," tap Location access. At the top of the screen, turn Access to my location on or off.
In the Settings app, tap Privacy, then tap Location Services. Make sure Location Services is on, and make sure Maps is set to While Using the App or Widgets. Set the date, time, and time zone correctly on your device.
When you call -startUpdatingLocation
, if location services were denied by the user, the location manager delegate will receive a call to -locationManager:didFailWithError:
with the kCLErrorDenied
error code. This works both in all versions of iOS.
I've combined two techniques in the code below
MKUserLocation *userLocation = map.userLocation; BOOL locationAllowed = [CLLocationManager locationServicesEnabled]; BOOL locationAvailable = userLocation.location!=nil; if (locationAllowed==NO) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location Service Disabled" message:@"To re-enable, please go to Settings and turn on Location Service for this app." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; [alert release]; } else { if (locationAvailable==NO) [self.map.userLocation addObserver:self forKeyPath:@"location" options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) context:nil]; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With