2010-10-27 6 views
11

testete ich mein Gerät (iPod Touch 2G iOS 4.1), wenn die OrtungsdienstelocationServicesEnabled immer JA Rückkehr

permitted = [locationManager locationServicesEnabled]; 

aktiviert sind und ich bekomme immer eine JA, ob die Ortungsdienste aktiviert sind oder nicht. Ich spreche von der allgemeinen Schaltfläche für Standortdienste und nicht von der App-spezifischen Schaltfläche. Auf dem iPad mit iOS 3.2.2 funktioniert alles gut.

Antwort

4

Wenn Sie den Delegaten für den Standortmanager implementieren, sollten Sie didFailWithError implementieren. Dort finden Sie die entsprechende Fehlermeldung erhalten, wenn der Benutzer keinen Zugriff auf Standort

Apple Documentation States: zuließ Wenn der Benutzer die Verwendung des Standortbestimmungsdienst Ihrer Anwendung verweigert, berichtet diese Methode einen kCLErrorDenied Fehler. Nach dem Empfang eines solchen Fehlers sollten Sie den Ortungsdienst anhalten.

+0

ich das tat, aber ich bin über die allgemeine Taste im Gespräch für die Aktivierung/Deaktivierung Ortungsdienste (und nicht die extra Taste für jede App). Außerdem sollte "locationServicesEnabled" nicht YES zurückgeben, wenn es deaktiviert ist. – testing

+0

viele Leute werden dadurch verwirrt, aber lesen Sie den Dokumentationslink, den ich zur Verfügung gestellt habe, es wird ja zurückkommen .. Sie müssen nach dem Fehler suchen. –

+1

Der einzige Satz, den ich darüber finden kann, ist in Ihrer Antwort. Wann gibt 'locationServicesEnabled' NO zurück? Es geschieht auf dem iPad ... Der Punkt, an dem ich verwirrt bin, ist 'Ein boolescher Wert, der anzeigt, ob Ortungsdienste auf dem Gerät aktiviert sind.' und' Der Benutzer kann Ortungsdienste in der Anwendung "Einstellungen" aktivieren oder deaktivieren, indem er den Standortdienste-Schalter umschaltet Allgemein. Es gibt also keinen Unterschied für den allgemeinen Schalter und den anwendungsspezifischen Schalter. – testing

8

Wenn Sie

[CLLocationManager locationServicesEnabled] 

dann prüfen Sie, ob locationServices in ganzem System aktiviert sind. Wenn Sie also zu Einstellungen -> Ortungsdienste gehen, sehen Sie den ersten Schalter. Diese Methode gibt den Status dieses Status zurück und steht nicht im Zusammenhang mit Ihrer App.

Wenn Sie wissen möchten, ob Ihre App Zugriff auf Standortdienste hat, verwenden Sie die Antwort von @Pascalius.

0

[CLLocationManager locationServicesEnabled] gibt NEIN zurück, wenn die Benutzereinstellungsschaltfläche auf AUS geschaltet ist, nur dann habe ich ein NEIN erreicht.

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

Swift 3.1 Funktion zurückkehrt -> Status: Bool und message: 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") 
    } 
} 
Verwandte Themen