Frage

Ich habe mein Gerät (iPod touch 2G iOS 4.1) getestet, wenn Standortdienste aktiviert sind

permitted = [locationManager locationServicesEnabled];

Und ich bekomme immer ein Ja, ob Standortdienste aktiviert sind oder nicht. Ich spreche über die allgemeine Schaltfläche für Standortdienste und nicht über die App -spezifische Taste von Apps. Auf dem iPad mit iOS 3.2.2 funktioniert alles gut.

War es hilfreich?

Lösung

Wenn Sie den Delegierten für den Standortmanager implementieren, sollten Sie DidfailWitherRor implementieren. Dort erhalten Sie den entsprechenden Fehler, wenn der Benutzer keinen Zugriff auf den Standort zulässt

Apple -Dokumentation gibt an:Wenn der Benutzer die Verwendung des Standortdienstes durch die Anwendung verweigert, berichtet diese Methode a kCLErrorDenied Error. Wenn Sie einen solchen Fehler erhalten, sollten Sie den Standortdienst einstellen.

Andere Tipps

Erinnere dich daran [locationManager locationServicesEnabled] ist veraltet seit iOS 4.0. Verwenden Sie die Klassenmethode [CLLocationManager locationServicesEnabled] stattdessen.

Die App -spezifische Taste von Apps kann durch abgerufen werden

[CLLocationManager authorizationStatus]

Wenn Sie verwenden

[CLLocationManager locationServicesEnabled]

Anschließend untersuchen Sie, ob Standortservices im gesamten System aktiviert sind. Wenn Sie also zu Einstellungen -> Standortdienste gehen und diesen ersten Schalter sehen. Diese Methode gibt den Zustand dieses Zustands zurück und steht nicht in Bezug auf Ihre App.

Wenn Sie wissen müssen, ob Ihre App Zugriff auf Standortdienste hat, verwenden Sie @pascalius Antwort.

Schnell 3.1 Funktion Rückgabe -> Status: bool und Nachricht: 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")
    }
}
if(![CLLocationManager locationServicesEnabled] || ([CLLocationManager authorizationStatus]!=kCLAuthorizationStatusAuthorizedWhenInUse && [CLLocationManager authorizationStatus]!=kCLAuthorizationStatusAuthorizedAlways))
{
        ; // app doesn't have access to localization to whatever you want
}

CllocationManager powerationServiceSabled] wird nein zurückgegeben, wenn die Taste der Benutzereinstellungen auf OFF geschaltet ist. Nur dann habe ich eine Nein erreicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top