Flutter-geolocator: iOS fragt nicht nach Standortberechtigungen

Erstellt am 25. Jan. 2019  ·  15Kommentare  ·  Quelle: Baseflow/flutter-geolocator

🐛 Fehlerbericht


Der iOS-Simulator fragt nicht nach der Standortberechtigung. Scheint, als würde das Gerät damit einfach überspringen oder "hängen". Wenn ich versuche, geolocator.getCurrentPosition manuell null zurückgegeben . Für Android funktioniert alles wie erwartet. Ich habe die Standortberechtigung mit geolocator.checkGeolocationPermissionStatus() überprüft und es ist
GeolocationStatus.unknown .

Erwartetes Verhalten

Der iOS-Simulator sollte nach Benutzerberechtigungen für den Ortungsdienst fragen.

Reproduktionsschritte

Aufbau

Version: 2.1.1

Plattform:

  • [12.1] :iphone: iOS

Hilfreichster Kommentar

@dstuff @kika @JStuve @StephanCassel ,
Ich habe es repariert! Ich habe auf Info.plist diese Berechtigung NSLocationAlwaysUsageDescription zusammen mit der NSLocationWhenInUseUsageDescription verwendet. Aber die App ist auf iOS 8 eingestellt, Flutter-Standard. Aber NSLocationAlwaysUsageDescription sollte nur mit iOS 10+ verwendet werden. Dies hat die Berechtigungsaufforderung in der iOS-App durcheinander gebracht. Ich entfernte und es funktionierte, bat um Erlaubnis und ich konnte den Standort erfahren. Ich hoffe, das kann euch auch helfen.

Alle 15 Kommentare

Was mir aufgefallen ist, ist, dass, wenn die App zum ersten Mal installiert wird und auf den Ortungsdienst zugreift, das System einen Dialog öffnet, der um Erlaubnis bittet und gleichzeitig checkPermissionStatus() unknown zurückgibt. Wenn der Benutzer den Zugriff zulässt, kann die App mit dem Abrufen der Position fortfahren.
Es sollte eine Möglichkeit geben, darauf zu warten, dass der Benutzer die Anforderung entweder zulässt oder ablehnt.

Ich habe genau das gleiche Problem. Android funktioniert gut, aber in iOS habe ich NSLocationWhenInUseUsageDescription hinzugefügt, aber ich werde nie nach Berechtigungen gefragt, also ist checkGeolocationPermissionsStatus() immer unknown . Dies ist auch auf einem physischen Gerät sowie auf dem Simulator.

Stundenlang das gleiche Problem. Android funktioniert gut. iOS hat null gegeben.
Ich habe die iOS-App aus dem Simulator entfernt und neu gestartet. Danach funktioniert es perfekt. Puhhh.
Ich hatte ein Startproblem aufgrund fehlender Informationen in der Poddatei. Es kann das Problem verursacht haben.

Das selbe hier. App von Gerät und Simulator entfernt, neu installiert, dasselbe.
Beim Versuch, den Standort abzurufen, ist die folgende Ausnahme aufgetreten: ERROR_ALREADY_REQUESTING_PERMISSIONS

@dstuff @kika @JStuve @StephanCassel ,
Ich habe es repariert! Ich habe auf Info.plist diese Berechtigung NSLocationAlwaysUsageDescription zusammen mit der NSLocationWhenInUseUsageDescription verwendet. Aber die App ist auf iOS 8 eingestellt, Flutter-Standard. Aber NSLocationAlwaysUsageDescription sollte nur mit iOS 10+ verwendet werden. Dies hat die Berechtigungsaufforderung in der iOS-App durcheinander gebracht. Ich entfernte und es funktionierte, bat um Erlaubnis und ich konnte den Standort erfahren. Ich hoffe, das kann euch auch helfen.

@cetorres Endlich habe getCurrentPosition auch checkGeolocationPermissionStatus aufgerufen, sodass meine Berechtigungsaufforderung nicht ausgelöst wurde!

Vielen Dank! :Biere:

Version: 3.0.0 ios fordert auch nicht zum Berechtigungszugriff auf.

Beim Debuggen in Xcode scheint NSLocationAlwaysAndWhenInUseUsageDescription ebenfalls erforderlich zu sein. (Wenn Sie nur NSLocationAlwaysUsageDescription und NSLocationWhenInUseUsageDescription schlägt dies in Flutter stumm fehl)

Gleiches Problem, alles hat sich bewiesen und nichts funktioniert. Nicht wirklich sicher, wie man es löst.

Vielen Dank @cetorres! Ich ziele eigentlich auf iOS 10+ ab, musste aber immer noch NSLocationAlwaysUsageDescription entfernen, damit es funktioniert. Meine App benötigt keine Standortinformationen, wenn sie nicht verwendet wird, daher ist dies gut genug.

Verrückt! Apple hat meine App für TestFlight mit den üblichen...

Sie können diesen Build jetzt für TestFlight-Tests verwenden oder an den App Store senden.

habe mir aber auch das geschickt:

Wir haben ein oder mehrere Probleme mit einer kürzlich erfolgten Bereitstellung für Ihre App festgestellt, [geschwärzt] 1.0.0 (12). Ihre Lieferung war erfolgreich, aber Sie möchten möglicherweise die folgenden Probleme bei Ihrer nächsten Lieferung beheben:

ITMS-90683: Fehlende Zweckzeichenfolge in Info.plist – Der Code Ihrer App verweist auf eine oder mehrere APIs, die auf sensible Benutzerdaten zugreifen. Die Datei Info.plist der App sollte einen NSLocationAlwaysUsageDescription-Schlüssel mit einer benutzerorientierten Zweckzeichenfolge enthalten, die klar und vollständig erklärt, warum Ihre App die Daten benötigt. Ab Frühjahr 2019 müssen alle an den App Store übermittelten Apps, die auf Benutzerdaten zugreifen, eine Zweckzeichenfolge enthalten. Wenn Sie externe Bibliotheken oder SDKs verwenden, verweisen diese möglicherweise auf APIs, die eine Zweckzeichenfolge erfordern. Auch wenn Ihre App diese APIs möglicherweise nicht verwendet, ist dennoch eine Zweckzeichenfolge erforderlich. Sie können sich an den Entwickler der Bibliothek oder des SDK wenden und ihn bitten, eine Version seines Codes zu veröffentlichen, die die APIs nicht enthält. Weitere Informationen (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

Sieht also so aus, als würde ich hier immer noch auf einem Drahtseil laufen. Ich kann das Plugin nicht aktualisieren, weil ich die AndroidX-Hürde gerade nicht überwinden möchte...

Was schlagen Sie vor? Ignorieren Sie einfach die Meldung "Wir haben Probleme identifiziert"?

Update: Das Hinzufügen aller drei unten in info.plist hat für mich funktioniert. Auch Apple freut sich.

NSLocationWhenInUseUsageDescription

NSLocationAlwaysAndWhenInUseUsageDescription

Danke für den Tipp, @vejmartin

@kbrmimbyl Du bist ein Lebensretter. Mir fehlte der Schlüssel "NSLocationAlwaysAndWhenInUseUsageDescription" in Info.plist und das verursachte diese Probleme!!

Interessant für alle, die info.plist in AndroidStudio und nicht in XCode modifiziert haben: Bei mir hat es funktioniert, als ich die "NSLocationAlwaysAndWhenInUseUsageDescription" entfernt und stattdessen die entsprechende "Privacy - Location Always and when in Use Usage Description" in Xcode ausgewählt habe. Aus irgendeinem Grund waren die anderen bereits so formatiert, aber dieser war es nicht. Ich hatte die gleichen Probleme wie oben erwähnt, aber onError hat mir nichts gebracht. Die Asynchronisierung wartete nur und wurde nie fortgesetzt. Und wenn Sie dann HotReload ausführen, erhalten Sie die ERROR_ALREADY_REQUESTING_PERMISSIONS, da sie noch auf Eingaben für diese Berechtigungsanfrage wartet.
Bei IOS11 hat es auf Android gut funktioniert. Jetzt geht es auch auf IOS.

Ich habe das gleiche Problem mit Flatter Web auf einem iOS-Gerät.
Anwendung fordert keinen Berechtigungsdialog auf IOS auf, funktioniert aber auf Windows- und Android-Geräten

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen