Ich habe gerade meine App mit dem iOS 11 SDK neu erstellt, um das zu entfernen blue banner
, was jetzt immer angezeigt wird. Ich dachte - "Genial, das hat funktioniert", nur um herauszufinden, dass die Ortungsdienste jetzt überhaupt nicht mehr funktionieren.
Die Anwendung für iOS 10 - Hat jemand etwas gehört?
Antworten:
Es scheint, dass Apple noch eine weitere Datenschutzfunktion hinzugefügt hat. Der Benutzer kann jetzt unsere überschreiben
requestAlwaysAuthorization
und aufrequestWhenInUseAuthorization
- herabstufen - was bedeutet, dass wir als Entwickler jetzt beide Beschreibungen in derInfo.plist
Ich habe festgestellt, dass sie einen neuen Schlüssel hinzugefügt haben
NSLocationAlwaysAndWhenInUseUsageDescription
Bei Verwendung dieses neuen Schlüssels - der Ortungsdienst funktionierte jedoch immer noch nicht. Bei weiterer Suche fand ich dieses Juwel gemischt mit all den zusätzlichen Debugging-Informationen:
Das widerspricht direkt dem Kommentar, den ich in der aktualisierten
CLLocationManager.h
Datei gefunden habe. Also habe ich ein Radar erstellt.Gute Nachrichten, wenn Sie den Ratschlägen der Debugging-Konsole IE folgen. Fügen Sie sowohl den neuen
NSLocationAlwaysAndWhenInUseUsageDescription
als auch einen der alten Schlüssel hinzuNSLocationWhenInUseUsageDescription
. Die Standortdienste funktionieren wieder.quelle
NSLocationAlwaysUsageDescription
teste in iOS 10.2 und habe meiner Info.plist die Berechtigung hinzugefügt, die ich benötige. Aber ich erhalte die obige Meldung in der Konsole, dass ich auch hinzufügen mussNSLocationWhenInUseUsageDescription
.startUpdatingLocation
oderrequestLocation
?startUpdatingLocation
Nur um die Schritte zur Behebung dieses Problems hinzuzufügen:
2 Möglichkeiten, es zu tun:
A) Der einfache Weg: Wählen Sie Ihre Info.plist-Datei aus, fügen Sie die Eigenschaften hinzu, beachten Sie, dass sie mit PRIVCY anstelle von LOCATION beginnen. Daher beginnen die genauen Namen dieser Variablen mit "Privacy - Location ..." usw., add jeweils hier und beschreiben, wie der Benutzer dies in der Warnung sehen würde.
B) Der harte / interessante / programmatische Weg (ich mag diesen Weg mehr):
Klicken Sie mit der rechten Maustaste auf Ihre Info.plist für Ihre App und wählen Sie dann "Quellcode anzeigen". Sie sollten alles in XML sehen.
Folgen Sie dem anderen ...... Format und fügen Sie diese Eigenschaften wie folgt hinzu:
Speichern Sie, klicken Sie mit der rechten Maustaste auf die Datei info.plist und wählen Sie dann Eigenschaftsliste. Dadurch sollte die Datei wieder in der Standardansicht angezeigt werden.
BEARBEITEN:
Ein anderes Mitglied fragte nach Code, hier ist es:
1) Fügen Sie in Ihrer .H-Datei Folgendes hinzu:
2) Fügen Sie in Ihrer .M-Datei unter ViewDidAppear () die Funktion hinzu:
Das funktioniert gut für mich, hoffentlich würde der Code auch für Sie funktionieren.
Grüße
Heider
quelle
viewwillAppear
und entferne den Delegaten inviewwilldisapper
. Wenn ich zur Einstellung gehe und die bereits ausgewählte auswähleAllow Always
. Ich bekomme das Update nur einmal und dann nicht mehr. JEDE Idee, wie man das behebt. Danke im Voraus!!Als ich unter iOS11 arbeitete, stellte ich fest, dass Info.plist mindestens NSLocationAlwaysAndWhenInUseUsageDescription in Info.plist benötigt:
Seltsam genug, wenn Ihre App mehrsprachig ist, benötigen die lokalisierten Versionen Ihrer Zeichenfolgen alle drei in diesem Beitrag genannten Schlüssel
requestAlwaysAuthorization()
undlocationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus)
schlagen im Hintergrund fehl.Aufnahme mit deutscher Übersetzung als Beispiel:
Ich hoffe, das spart Ihnen Zeit beim Stolpern.
quelle
Arbeiten in Swift 4.0.3
quelle
Folge diesen Schritten:
Ich bin auf dasselbe Problem mit einer App gestoßen, die "Immer Autorisierung" benötigte, und habe es wie folgt behoben:
1. Schlüssel hinzufügen
NSLocationWhenInUseUsageDescription
zuInfo.plist
2. Hinzufügen
NSLocationAlwaysAndWhenInUseUsageDescription
zuInfo.plist
3. Hinzufügen
NSLocationAlwaysUsageDescription
zuInfo.plist
(zur Unterstützung von <iOS 11)4. VORHER anrufen )
requestWhenInUseAuthorization()
requestAlwaysAuthorization(
Sie können requestAlwaysAuthorization () nicht vor requestWhenInUseAuthorization () ausführen. Sie müssen zu dieser Berechtigungsstufe eskalieren. Nachdem ich diese Änderungen vorgenommen hatte, funktionierten die Standortaktualisierungen wieder ordnungsgemäß.
Weitere Details finden Sie hier:
https://developer.apple.com/documentation/corelocation/choosing_the_authorization_level_for_location_services/requesting_always_authorization
quelle
Besser sicher als leid. In iOS 11: Fügen Sie das Folgende hinzu und Sie sind gut.
quelle
Getestet auf iOS 12.2 mit Swift 5
Schritt 1. Sie müssen die folgenden Datenschutzberechtigungen in die plist-Datei einfügen
Schritt 2. Stellen Sie sicher, dass Sie den folgenden schnellen Code haben, um die aktuellen Standorte abzurufen
quelle
Swift: 3 Ich habe das gleiche Problem konfrontiert. Ich war total durcheinander, die Lösung zu finden. Hier ist, wie ich das Problem behoben habe.
Schritt 1: Projektdatei> Funktionen> Hintergrundmodi> Standortaktualisierung auswählen
Schritt 2: Fügen Sie Info.plist die Schlüssel NSLocationWhenInUseUsageDescription, NSLocationAlwaysAndWhenInUseUsageDescription hinzu
Schritt 3 :
quelle