2011-09-02 11 views
7
location = [[CLLocationManager alloc] init]; 
    location.desiredAccuracy = kCLLocationAccuracyBestForNavigation ; 
    location.distanceFilter = 10 ; 
    location.delegate=self; 



    locationEnabledBool = [CLLocationManager locationServicesEnabled]; 

    if (locationEnabledBool ==NO) { 
     UIAlertView *locationAlert = [[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]; 
     [locationAlert show]; 
     [locationAlert release]; 

    } 
    else 
     [location startUpdatingLocation]; 

El valor de locationEnabledBool es siempre YES, independientemente de si o no los servicios de localización están activados. ¿Puede ayudar un cuerpo?cheque por locationServicesEnabled siempre devuelve SÍ, independientemente del interruptor de palanca manual para decidir si los servicios de localización están activados

Respuesta

11

en lugar de

if (locationEnabledBool == NO) { 
    //give error message 
} 

tratar

if ([CLLocationManager locationServicesEnabled] ==NO || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) { 
    //give error message 
} 

He encontrado esto en el enlace.

Detecting whether location services are enabled for my app

+0

'si ([CLLocationManager locationServicesEnabled] == NO && [CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) { // dar mensaje de error }' un poco error tipográfico en la primera [soporte] y una && en lugar de || – kalafun

0

Cuando pruebe este código, deberá asegurarse de probarlo en un dispositivo y no solo con el simulador de iOS.

Además, le sugiero que vuelva a comprobar en la configuración de ese dispositivo para asegurarse de que los servicios de localización , en la primera página de los ajustes, dice Off.

+1

Gracias por su respuesta. Estaba ejecutando el código en el dispositivo y verifiqué que los Servicios de ubicación dijeran DESACTIVADOS en la configuración. en lugar de if (locationEnabledBool == NO) if (locationEnabledBool == NO || ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied)) funcionó para mí. – alekhine

Cuestiones relacionadas