Warum fordert requestWhenInUseAuthorization den Benutzer nicht zum Zugriff auf den Speicherort auf?

74

In meiner viewDidLoadMethode habe ich

locationManager = [[CLLocationManager alloc]init]; // initializing locationManager
locationManager.delegate = self; // we set the delegate of locationManager to self.
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];


if([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
    [locationManager requestWhenInUseAuthorization];
}

Und die Anfrage wird aufgerufen, aber der Benutzer wird nicht dazu aufgefordert? Warum?

spen123
quelle
Es wird auch nicht empfohlen, die Betriebssystemversion so zu überprüfen, wie Sie es tun. Besser zu bedienenif([locationManager respondsToSelector:@selector(requestWhenInUseAuthorization:)])
Jai Govindani

Antworten:

281

Sie müssen wahrscheinlich Ihre plistDatei aktualisieren . Hier ist ein Tutorial, wie es geht , schnell und schmutzig:

Sie müssen Ihrer Info.plist-Datei einen der folgenden Schlüssel hinzufügen:

NSLocationWhenInUseUsageDescription

NSLocationAlwaysUsageDescription

Sie müssen auch eine Autorisierung für die entsprechende Standortmethode anfordern, WhenInUseoder Background. Verwenden Sie einen dieser Aufrufe:

[self.locationManager requestWhenInUseAuthorization]
[self.locationManager requestAlwaysAuthorization]

Es gibt auch einen Beitrag, den ich hilfreich fand:

Ortungsdienste funktionieren unter iOS 8 nicht

Diese Antwort beschreibt, wie Sie Ihre plistDatei aktualisieren :

Fügen Sie Ihrer info.plist eine der folgenden Zeilen hinzu

<key>NSLocationWhenInUseUsageDescription</key>
<string>The spirit of stack overflow is coders helping coders</string>

<key>NSLocationAlwaysUsageDescription</key>
<string>I have learned more on stack overflow than anything else</string>

Sie sollten wahrscheinlich die Zeichenfolgen des Wörterbucheintrags in der Datei info.plist anpassen und überprüfen, bevor Sie den Code versenden .

Adrian
quelle