2010-10-27 17 views
11

He probado mi dispositivo (iPod Touch 2G iOS 4.1) si los servicios de localización están activadoslocationServicesEnabled siempre volver SÍ

permitted = [locationManager locationServicesEnabled]; 

y siempre me dan un SÍ si los servicios de localización están activados o no. Estoy hablando del botón general para los servicios de ubicación y no del botón específico de la aplicación. En el iPad con iOS 3.2.2 todo funciona bien.

Respuesta

4

Cuando implementa el delegado para el administrador de ubicación, debe implementar didFailWithError. En no obtendrá el error correspondiente si el usuario no permitió el acceso a la ubicación

Apple Documentation States: Si el usuario rechaza el uso de la aplicación del servicio de localización, este método informa de un error kCLErrorDenied. Al recibir dicho error, debe detener el servicio de ubicación.

+0

que hice esto, pero yo estoy hablando en general el botón para activar/desactivar los servicios de localización (y no el botón adicional para cada aplicación). Además 'locationServicesEnabled' no debe devolver SÍ si está deshabilitado. – testing

+0

muchas personas se confunden con esto, pero lea el enlace de documentación que proporcioné, devolverá sí ... debe verificar el error. –

+1

La única frase que puedo encontrar sobre eso está en tu respuesta. ¿Cuándo 'locationServicesEnabled' devuelve NO? Lo hace en el iPad ... El punto por el que estoy confundido es 'Un valor booleano que indica si los servicios de ubicación están habilitados en el dispositivo' y' El usuario puede habilitar o deshabilitar servicios de ubicación desde la aplicación Configuración al alternar el interruptor Servicios de ubicación en General. Así que no hay diferencia para el interruptor general y el interruptor específico de la aplicación. – testing

8

Cuando se utilice

[CLLocationManager locationServicesEnabled] 

entonces inspeccionar si locationServices están habilitados en todo el sistema. Entonces, cuando vaya a Configuración -> Servicios de ubicación y verá ese primer cambio. Ese método devuelve el estado de ese estado y no está relacionado con tu aplicación.

Si necesita saber si su aplicación tiene acceso a servicios de ubicación, use @Pascalius answer.

0

[CLLocationManager locationServicesEnabled] devolverá NO cuando el botón de configuración del usuario se cambie a OFF, solo entonces he logrado un NO.

0
if(![CLLocationManager locationServicesEnabled] || ([CLLocationManager authorizationStatus]!=kCLAuthorizationStatusAuthorizedWhenInUse && [CLLocationManager authorizationStatus]!=kCLAuthorizationStatusAuthorizedAlways)) 
{ 
     ; // app doesn't have access to localization to whatever you want 
} 
0

Swift vuelve 3.1 de función -> Estado: Bool y el mensaje: String

func isLocationEnabled() -> (status: Bool, message: String) { 
    if CLLocationManager.locationServicesEnabled() { 
     switch(CLLocationManager.authorizationStatus()) { 
     case .notDetermined, .restricted, .denied: 
      return (false,"No access") 
     case .authorizedAlways, .authorizedWhenInUse: 
      return(true,"Access") 
     } 
    } else { 
     return(false,"Turn On Location Services to Allow App to Determine Your Location") 
    } 
} 
Cuestiones relacionadas