how do I detect location service disable for my app?

Massimo picture Massimo · Sep 30, 2010 · Viewed 7.6k times · Source

IOS4 has recently introduced the possibility to enable/disable location services for a specific application.

I need to detect if this settings is enabled/disabled for MY application.

First I have tried with:

if ([CLLocationManager locationServicesEnabled])
    {
       ....
    } 

however this refers to the global location service and not to the specific application setting.

Second I have tried to use

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
   ...
} 

It works but it gets called both in case of service app setting disabled and in other cases like, for example, if a measure fails for some reasons.

I need a code to detect if MY application is allowed to use location services.

How can i achieve this?

Thanks for your support

Answer

Kris Markel picture Kris Markel · Sep 30, 2010

From the documentation for locationManager: didFailWithError:

If the user denies your application’s use of the location service, this method reports a kCLErrorDenied error. Upon receiving such an error, you should stop the location service.

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
    if ([[error domain] isEqualToString: kCLErrorDomain] && [error code] == kCLErrorDenied) {
        // The user denied your app access to location information.
    }
}

You can find the other error codes here.