Ich habe an einer App gearbeitet, die auf iOS 8 aktualisiert wurde und die Standortdienste nicht mehr funktionierten. Wahrscheinlich erhalten Sie einen Fehler im Debug-Bereich wie folgt:
Versuch, MapKit-Standortupdates zu starten, ohne um die Standortberechtigung zu bitten. Muss zuerst -[CLLocationManager requestWhenInUseAuthorization] oder -[CLLocationManager requestAlwaysAuthorization] aufrufen.
Ich habe das am wenigsten invasive Verfahren durchgeführt. Fügen Sie zunächst den Eintrag NSLocationAlwaysUsageDescription
zu Ihrer info.plist hinzu:
Beachten Sie, dass ich den Wert für diesen Schlüssel nicht ausgefüllt habe. Dies funktioniert immer noch, und ich mache mir keine Sorgen, weil dies eine firmeninterne App ist. Außerdem gibt es bereits einen Titel, der um die Verwendung von Standortdiensten bittet, daher wollte ich nichts redundantes tun.
Als nächstes habe ich eine Bedingung für iOS 8 erstellt:
if ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[_locationManager requestAlwaysAuthorization];
}
Nach diesem Schritt wird die Methode locationManager:didChangeAuthorizationStatus:
aufgerufen:
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus: (CLAuthorizationStatus)status
{
[self gotoCurrenLocation];
}
Und jetzt funktioniert alles einwandfrei. Wie immer, schauen Sie sich die Dokumentation an.