2014-06-08 23 views
7

Ich versuche MapKit auf iOS 8 zu verwenden, und ich erhalte immer die Fehlermeldung:MapKit in iOS 8 und Swift

Trying to start MapKit location updates without prompting for location authorization. Must call 
-[CLLocationManager requestWhenInUseAuthorization] or -[CLLocationManager 
requestAlwaysAuthorization] first. 

es hier oben schauen, fand ich, dass ich in meinem plist zu implementieren NSLocationWhenInUsageDescription hatte und auch einen Anruf an locationManager.requestWhenInUseAuthorization(), aber nichts passiert und ich bekomme immer noch diesen Fehler in der Konsole. Was mache ich falsch?

+1

'NSLocationWhenInUsageDescription' ist der falsche Schlüssel. Verwenden Sie 'NSLocationWhenInUseUsageDescription'. – Klaas

Antwort

10

In meiner Anwendung Delegierten machte ich einen optionalen var für die Location außerhalb der Klasse und stellen Sie dann

locManager = CLLocationManager() 
locManager!.requestWhenInUseAuthorization() 

Diese die Warnung Ansicht verursacht mit Ihrem NSLocationWhenInUseUsageDescription oder NSLocationAlwaysUsageDescription Pop-up, wenn Sie es entsprechend ändern.

Dann habe ich in der View-Controller-Datei eine andere Var außerhalb der Klasse gemacht, um einen lokalen CLLocationManager zu halten. Ich habe dann

if locManager { 
     locMan = locManager! 
     locMan!.delegate = self 
    } 

Dann können Sie die delegierte Methode

func locationManager(_manager: CLLocationManager!,didChangeAuthorizationStatus status: CLAuthorizationStatus) 

verwenden, wenn die Berechtigungsstatusänderungen aufgerufen wird, was es tut, wenn der Benutzer auf das Pop-up reagiert. Innerhalb dieser können Sie dieses Stück Code verwenden, um die Benutzer-Standort auf der Karte

if status == CLAuthorizationStatus.AuthorizedWhenInUse { 
     map.showsUserLocation = true 
    } 

fügt die Benutzer nur auf die Karte Lage zu setzen, wenn Sie berechtigt sind, für wenn im Einsatz.

+0

Das hat den Fehler beseitigt, aber er fordert immer noch keine Erlaubnis oder zeigt den Standort des Benutzers an. – Phil

+0

Ich denke, es fragt Sie nur beim ersten Öffnen der App, so dass Sie entweder aus dem Simulator oder Gerät löschen oder in die Einstellungen gehen und Standort zulassen müssen –

+0

Das hat nicht funktioniert und die App wird nicht angezeigt, sogar unter Ort die Einstellungen. – Phil

9

Ich wurde von diesem auch belästigt, bis ich erkannte, dass der Schlüssel geändert hat. Wenn du NSLocationUsageDescription in hast, musst du entweder zu NSLocationAlwaysUsageDescription oder wechseln (setze mindestens einen zu YES), jetzt ist es obligatorisch in iOS8.

Und dann funktioniert Roberts Code, wie es sollte (Danke für die Freigabe).

+1

Nur eine Anmerkung: Diese Tasten sind nicht JA/NEIN. Sie sollten Text einfügen, der einen Grund angibt, den der Benutzer sehen wird, warum Sie einen Standort benötigen (z. B. "Die App findet Orte von Interesse in Ihrer Nähe."). Also funktioniert "JA", aber auch "NEIN" oder "42", solange ein Wert für die Taste eingestellt ist. – Anna

7

Es ist NSLocationWhenInUseUsageDescription, nicht NSLocationWhenInUsageDescription. Die meisten Orte online haben den falschen Schlüssel

+1

Danke GOTT! Habe einen ganzen Tag damit verbracht, herauszufinden, warum nichts funktioniert, und tatsächlich sieht es so aus, als ob viele Beiträge falsch liegen. Vielen Dank!! – TommyG

Verwandte Themen