13 votes

locationServicesEnabled retourne toujours YES

J'ai testé mon appareil (iPod Touch 2G iOS 4.1) si les services de localisation sont activés.

permitted = [locationManager locationServicesEnabled];

et j'obtiens toujours un OUI, que les services de localisation soient activés ou non. Je parle du bouton général pour les services de localisation et non du bouton spécifique à l'application. Sur l'iPad avec iOS 3.2.2, tout fonctionne bien.

35voto

Pascalius Points 1202

Rappelez-vous que [locationManager locationServicesEnabled] es déprécié depuis iOS 4.0 . Utiliser la méthode de la classe [CLLocationManager locationServicesEnabled] à la place.

Le bouton spécifique à l'application peut être récupéré par

[CLLocationManager authorizationStatus]

8voto

Josip B. Points 451

Lorsque vous utilisez

[CLLocationManager locationServicesEnabled]

puis vous vérifiez si les LocationServices sont activés dans tout le système. Donc quand vous allez dans Paramètres -> Services de localisation et que vous voyez ce premier interrupteur. Cette méthode renvoie l'état de cet état et n'est pas en relation avec votre application.

Si vous avez besoin de savoir si votre application a accès aux services de localisation, utilisez la réponse de @Pascalius.

4voto

Aaron Saunders Points 20454

Lorsque vous implémentez le délégué pour le gestionnaire d'emplacement, vous devriez implémenter didFailWithError. Dans ce cas, vous obtiendrez l'erreur appropriée si l'utilisateur n'a pas autorisé l'accès à l'emplacement.

Documentation Apple États : Si l'utilisateur refuse l'utilisation du service de localisation par votre application, cette méthode rapporte un kCLErrorDenied erreur. Si vous recevez une telle erreur, vous devez arrêter le service de localisation.

4voto

Kassem Itani Points 531

Swift 3.1 la fonction retourne -> status:Bool et message:String

func isLocationEnabled() -> (status: Bool, message: String) {
    if CLLocationManager.locationServicesEnabled() {
        switch(CLLocationManager.authorizationStatus()) {
        case .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")
    }
}

1voto

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X