Flutter-geolocator: Möglichkeit, auf den Standort nur im Vordergrund zuzugreifen

Erstellt am 4. Okt. 2020  ·  28Kommentare  ·  Quelle: Baseflow/flutter-geolocator

🚀 Funktionsanfragen

Guten Morgen zusammen! Google hat die Richtlinien für Berechtigungen und Standortberechtigungen aktualisiert, denen Anwendungen entsprechen müssen, um bei Google Play veröffentlicht zu werden .

Die neue Richtlinie schränkt die Möglichkeit ein, im Hintergrund auf den Standort von Benutzern zuzugreifen: Es wäre großartig, nur im Vordergrund auf den Standort zugreifen zu können.

Insbesondere ist es jetzt notwendig, die Berechtigung ACCESS_BACKGROUND_LOCATION im Manifest anzufordern und die hier bereitgestellten Richtlinien zu befolgen .

Falls die Anwendung der neuen Richtlinie nicht entspricht, werden Updates mit ähnlichen Fehlermeldungen wie dieser abgelehnt
Background location access not declared We detected that your app contains at least one feature that requests background location access, however you have not submitted a permission declaration form for this feature. Please log in to your Play Console and submit a declaration form.

Kontextualisieren der Funktion

Es sollte zwei neue Funktionalitäten geben, die entweder durch neue Funktionen oder durch Hinzufügen von Parametern zu den bestehenden implementiert werden könnten:

  1. Nur Vordergrundposition anfordern
  2. Greifen Sie auf die Vordergrundposition zu, falls verfügbar, und lösen Sie sonst eine Ausnahme aus.

Beschreiben Sie die Funktion

Mit der vorgeschlagenen Änderung sollte das Framework nur dann auf den Standort der Benutzer zugreifen, wenn die Anwendung aktiv ist, ohne irgendwelche Aktivitäten auszuführen, wenn die Anwendung in den Hintergrund versetzt oder ausgeschaltet wird.

Betroffene Plattformen (alles Zutreffende ankreuzen)

  • [ ] :iphone: iOS
  • [x] :Roboter: Android
android needs more info

Hilfreichster Kommentar

@cguentherTUChemnitz und @arnerodde365 vielen Dank für das zusätzliche Feedback. Ich kann jetzt bestätigen, dass der Play Store Ihre App ablehnt, wenn Sie die Berechtigung ACCESS_BACKGROUND_LOCATION in Ihre AndroidManifest.xml-Datei aufnehmen.

Ich kann auch bestätigen, dass dies nicht automatisch vom Geolocator-Plugin hinzugefügt wird, sondern von anderen Plugins hinzugefügt werden könnte (zB das Location-Plugin fügt es automatisch hinzu). Für diejenigen, die wirklich eine Problemumgehung benötigen, können Sie Ihrer AndroidManifest.xml Folgendes als direktes untergeordnetes Element des <manifest ...> Tags hinzufügen:

 <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" tools:node="remove"/>

Dadurch wird sichergestellt, dass die Berechtigung ACCESS_BACKGROUND_LOCATION entfernt wird, auch wenn andere Plugins sie der Datei AndroidManifest.xml hinzufügen. Beachten Sie, dass dies bei Plugins, die auf diese Berechtigung angewiesen sind, unerwartetes Verhalten auslösen kann.

Ich werde dieses Problem jetzt schließen, da ich glaube, dass es nicht durch das Geolocator-Plugin selbst verursacht wird.

Alle 28 Kommentare

Hey Fulvio, kannst du eine Lösung finden? Ich bin auch mit dem gleichen Problem.

bin auch mit dem gleichen Problem. Tatsächlich verwendet meine App den Standort im Hintergrund nicht. Aber google play sagt zu mir: Du verwendest die Location im Hintergrund. Ich denke, dass die Anwendung aufgrund dieses Plugins die Berechtigung hat, auf den Hintergrundspeicherort zuzugreifen.

Das Plugin greift im Hintergrund nicht auf den Speicherort zu, es ist eine viel nachgefragte Funktion, die ich jedoch noch nicht implementieren konnte.

Können Sie überprüfen, ob die Berechtigung ACCESS_BACKGROUND_LOCATION in Ihrer AndroidManifest.xml-Datei aufgeführt ist? Wenn dies der Fall ist, entfernen Sie es bitte, es ist nicht erforderlich, damit dieses Plugin seine Arbeit verrichtet.

Wir haben auch das gleiche Problem... Wir haben bereits die Berechtigung aus der Manifestdatei entfernt, einen weiteren Patch gesendet, aber Google lehnt den Build immer wieder ab.

Guten Morgen allerseits, danke @mvanbeusekom für deine Überlegung.

@marcuslindemannrohden Ich habe es noch nicht geschafft, neue Versionen der Anwendung im Play Store zu veröffentlichen, ohne eine Ausnahme

Ich habe ACCESS_BACKGROUND_LOCATION nicht zum Manifest hinzugefügt, aber soweit ich dieser Google-Ressource entnommen habe, wurde die Berechtigung automatisch hinzugefügt, da wir auf API-Versionen unter 29 abzielen.

@mvanbeusekom (und diese Frage richtet sich natürlich an alle Benutzer dieser Bibliothek 😊) haben Sie es im Oktober geschafft, eine Anwendung zu veröffentlichen oder zu aktualisieren? Deine Erfahrungen in diesem Sinne zu teilen wäre unglaublich hilfreich!

Guten Morgen @fbambusi , vielen Dank für dieses Feedback.

Ich habe seit Oktober noch keine App an den Play Store gesendet, die dieses Plugin enthält, daher habe ich dieses Verhalten noch nicht erlebt. Ich werde jedoch in das bereitgestellte Material eintauchen und sehen, ob ich es verstehen kann, und hier ein Update bereitstellen, um mögliche Lösungen zu diskutieren. Ich arbeite derzeit an der Lösung der Probleme Nr. 546 und Nr. 556 und werde dies gleich nachholen (sollte in der nächsten Woche irgendwo sein).

Wenn jemand Vorschläge zu einer möglichen Lösung hat, lassen Sie es mich bitte wissen, es wäre sehr dankbar

Das Plugin greift im Hintergrund nicht auf den Speicherort zu, es ist eine viel nachgefragte Funktion, die ich jedoch noch nicht implementieren konnte.

Können Sie überprüfen, ob die Berechtigung ACCESS_BACKGROUND_LOCATION in Ihrer AndroidManifest.xml-Datei aufgeführt ist? Wenn dies der Fall ist, entfernen Sie es bitte, es ist nicht erforderlich, damit dieses Plugin seine Arbeit verrichtet.

Ich erinnere mich nicht, wann ich diese Berechtigung hinzugefügt habe, aber ich habe diese Berechtigung gestern gelöscht und die App an Google gesendet. Zuletzt hat Google meine App erst jetzt freigegeben.
Sie müssen im Erklärungsformular für die Google Play-Konsole angeben, dass Ihre Anwendung den Standort im Hintergrund nicht verwendet

Hey Leute, habe gerade die Genehmigung von Google Play erhalten.
Ich habe festgestellt, dass die Klasse PermissionManager innerhalb der Bibliothek anscheinend die Berechtigung "ACCESS_BACKGROUND_LOCATION" enthält.
Ich habe die Klasse lokal geändert und alles entfernt, was mit dem Hintergrundstandort und jeder Bedingung zu tun hat, die ihn zurückgeben könnte, um nur die Berechtigungen "ACCESS_FINE_LOCATION" und "ACCESS_COARSE_LOCATION" zu verwenden, die gestern an Google gesendet und genehmigt wurden.

Ich kann nicht bestätigen, ob es wirklich Auswirkungen auf die Zulassung hatte, aber falls es jemand braucht
Folgen Sie der geänderten Klasse, um den Hintergrundspeicherort nicht zu verwenden.

package com.baseflow.geolocator.permission;

import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
import android.util.Log;

import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import com.baseflow.geolocator.errors.ErrorCallback;
import com.baseflow.geolocator.errors.ErrorCodes;
import com.baseflow.geolocator.errors.PermissionUndefinedException;

import java.util.*;

import io.flutter.plugin.common.PluginRegistry;

public class PermissionManager
        implements PluginRegistry.RequestPermissionsResultListener {

    private static final int PERMISSION_REQUEST_CODE = 109;

    <strong i="10">@Nullable</strong>
    private Activity activity;
    <strong i="11">@Nullable</strong>
    private ErrorCallback errorCallback;
    <strong i="12">@Nullable</strong>
    private PermissionResultCallback resultCallback;

    public LocationPermission checkPermissionStatus(
            Context context,
            Activity activity) throws PermissionUndefinedException {
        String permission = determineFineOrCoarse(context);

        // If target is before Android M, permission is always granted
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
            return LocationPermission.whileInUse;
        }

        final int permissionStatus = ContextCompat.checkSelfPermission(context, permission);
        if (permissionStatus == PackageManager.PERMISSION_DENIED) {
            if (PermissionUtils.isNeverAskAgainSelected(activity, permission)) {
                return LocationPermission.deniedForever;
            } else {
                return LocationPermission.denied;
            }
        }

        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
            return LocationPermission.whileInUse;
        }


        return LocationPermission.whileInUse;
    }

    public void requestPermission(
            Activity activity,
            PermissionResultCallback resultCallback,
            ErrorCallback errorCallback)
            throws PermissionUndefinedException {
        final ArrayList<String> permissionsToRequest = new ArrayList<>();

        // Before Android M, requesting permissions was not needed.
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
            return;
        }

        String permission = determineFineOrCoarse(activity);
        permissionsToRequest.add(permission);



        this.errorCallback = errorCallback;
        this.resultCallback = resultCallback;
        this.activity = activity;

        ActivityCompat.requestPermissions(
                activity,
                permissionsToRequest.toArray(new String[0]),
                PERMISSION_REQUEST_CODE);
    }

    <strong i="13">@Override</strong>
    public boolean onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        if (requestCode != PERMISSION_REQUEST_CODE) {
            return false;
        }

        if (this.activity == null) {
            Log.e("Geolocator", "Trying to process permission result without an valid Activity instance");
            if (this.errorCallback != null) {
                this.errorCallback.onError(ErrorCodes.activityNotSupplied);
            }
            return false;
        }

        String requestedPermission;

        try {
            requestedPermission = determineFineOrCoarse(this.activity);
        } catch (PermissionUndefinedException ex) {
            if (this.errorCallback != null) {
                this.errorCallback.onError(ErrorCodes.permissionDefinitionsNotFound);
            }

            return false;
        }

        LocationPermission permission = LocationPermission.denied;

        int requestedPermissionIndex = indexOf(permissions, requestedPermission);

        if (requestedPermissionIndex < 0) {
            Log.w("Geolocator", "Location permissions not part of permissions send to onRequestPermissionsResult method.");
            return false;
        }

        if (grantResults.length == 0) {
            Log.i("Geolocator", "The grantResults array is empty. This can happen when the user cancels the permission request");
            return false;
        }

        if (grantResults[requestedPermissionIndex] == PackageManager.PERMISSION_GRANTED) {
            permission = LocationPermission.whileInUse;
        } else {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !activity.shouldShowRequestPermissionRationale(requestedPermission)) {
                permission = LocationPermission.deniedForever;
            }
        }

        for (String perm : permissions) {
            PermissionUtils.setRequestedPermission(activity, perm);
        }

        if (this.resultCallback != null) {
            this.resultCallback.onResult(permission);
        }

        return true;
    }

    private static <T> int indexOf(T[] arr, T val) {
        return Arrays.asList(arr).indexOf(val);
    }

    private static String determineFineOrCoarse(Context context) throws PermissionUndefinedException {
        boolean wantsFineLocation = PermissionUtils.hasPermissionInManifest(context, Manifest.permission.ACCESS_FINE_LOCATION);
        boolean wantsCoarseLocation = PermissionUtils.hasPermissionInManifest(context, Manifest.permission.ACCESS_COARSE_LOCATION);

        if (!wantsCoarseLocation && !wantsFineLocation) {
            throw new PermissionUndefinedException();
        }

        return wantsFineLocation ? Manifest.permission.ACCESS_FINE_LOCATION : Manifest.permission.ACCESS_COARSE_LOCATION;
    }

}

Hallo @fbambusi , @marcuslindemannrohden , @eniserkaya ,

Ich habe das gelesen und es scheint, dass das Hauptproblem darin bestehen könnte, dass Sie beim Abhören des Positionsstreams (mit der Methode Geolocator.getPositionStream() ) sicherstellen müssen, dass Sie aufhören, die streamen (das Abonnement kündigen), wenn Ihre Anwendung pausiert (in den Hintergrund gestellt) wird.

Beachten Sie auch, dass die Versionen 6.0.0 bis 6.1.1 einen Fehler enthielten, der den Positionsstrom aktiv lassen konnte, wenn Sie die Methode getCurrentPosition aufrufen, während Sie einen Positionsstrom aktiv haben (siehe Probleme #485 und #541). Dieses Problem ist in Version 6.1.2 behoben.

Um zusammenzufassen:

  1. Stellen Sie sicher, dass Sie ACCESS_BACKGROUND_LOCATION in Ihre AndroidManifest.xml-Datei aufnehmen.
  2. Stellen Sie sicher, dass Sie aktive Positionsstreams abbestellen / kündigen, wenn Ihre App in den Hintergrund verschoben wird;
  3. Stellen Sie sicher, dass Sie auf Version 6.1.2 des Geolocator-Plugins aktualisieren.

Einige weitere Informationen finden Sie hier:

Kleine Anmerkung zum Code, den @marcuslindemannrohden aus der Klasse PermissionManager hat. Dieser Code fordert nur Hintergrundberechtigungen an, wenn die Berechtigung ACCESS_BACKGROUND_LOCATION in der Datei AndroidManifest.xml aufgeführt ist. Wenn es nicht vorhanden ist, wird es nicht angefordert und wirkt sich daher überhaupt nicht auf die App aus und sollte auch kein Grund für Google sein, Ihre App abzulehnen.

PS lass es mich wissen, wenn das hilft. Ich habe mehrere Apps, die dieses Plugin verwenden, ohne Probleme im Google Play Store eingereicht, obwohl sie die getPositionStream Funktion nicht verwenden. Sie benötigen nur die Funktionen getLastKnownPosition und getCurrentPosition . Daher ist jedes andere Feedback zu diesem Thema sehr willkommen.

Irgendwelche Updates dazu? Es fällt mir schwer, meine App zu genehmigen

Bekomme die gleiche Antwort:

Standortzugriff im Hintergrund nicht deklariert Wir haben festgestellt, dass Ihre App mindestens eine Funktion enthält, die den Standortzugriff im Hintergrund anfordert, Sie haben jedoch kein Formular zur Berechtigungserklärung für diese Funktion eingereicht. Melden Sie sich bei Ihrer Play Console an und senden Sie ein Erklärungsformular.

Ich verwende nur getCurrentPosition,
Ich füge keine ACCESS_BACKGROUND_LOCATION-Berechtigung ein, nur ACCESS_FINE_LOCATION,
Ich verwende die neueste Version 6.1.7

Ich ziele auf API-Ebene 29 ab und soweit ich von Developers.android verstehe, ist das Hinzufügen eines Vordergrunddiensttyps für 29 und höher erforderlich.

@arnerodde365 , wenn Sie die von Ihnen bereitgestellte Dokumentation <service Deklaration zu Ihrer AndroidManifest.xml Datei hinzufügen und die Eigenschaft android:foregroundServiceType auf location :

<!-- Recommended for Android 9 (API level 28) and lower. -->
<!-- Required for Android 10 (API level 29) and higher. -->
<service
    android:name="MyNavigationService"
    android:foregroundServiceType="location" ... >
    <!-- Any inner elements would go here. -->
</service>

Beachten Sie, dass die <service ...></service> Deklaration als untergeordnetes Element Ihrer <application> Deklaration aufgeführt werden sollte.

Es wäre toll, wenn du das mal ausprobieren könntest und mir mitteilen, ob das Problem damit behoben ist. Wenn ja, werde ich die Dokumentation aktualisieren und sicherstellen, dass dies in der Datei README.md erwähnt wird.

Ja, ich lass es dich wissen
Aber ich bin ein bisschen neu in der App-Entwicklung und habe keine Ahnung, was ich in das android:name= ""

Ich denke, dies sollte der Name eines Dienstes aus dem Paket flatter-geolocator sein?

@arnerodde365 es kann alles sein, was Sie

Die App wird immer noch mit der gleichen Antwort abgelehnt :(

Irgendein Update? Ich habe meine Kompilierungs- und Ziel-SDK-Versionen auf 29, habe KEINE Hintergrundberechtigungen in die AndroidManifest.xml-Datei aufgenommen und im App Bundle-Explorer wird immer noch angezeigt, dass ich im Hintergrund Standortberechtigungen anfordere.

Um die Schleife kürzer zu halten, würde ich empfehlen, das Android-Appbundle über Folgendes zu erstellen:

flutter build appbundle
Running Gradle task 'bundleRelease'...                             10.1s
✓ Built build/app/outputs/bundle/release/app-release.aab (132.6MB).

Extrahieren Sie die .aab-Datei und suchen Sie nach app-release/base/manifest/AndroidManifest.xml

Diese Manifest-Datei sollte vom App-Store geparst werden. Solange der Eintrag von [...]android.permission.ACCESS_BACKGROUND_LOCATION[...] der Appstore ohne genaue Erklärung ablehnen, warum Sie ihn benötigen.

Das Problem dabei ist, dass mehrere Flatter-Plugins diese Dinge selbst einführen, wie der Geolocator oder auch das Location-Plugin.

Daher muss der Diskussionspunkt hier dahingehend geändert werden, wie Sie den Eintrag für die Berechtigung für den Standort im Hintergrund aus dem Geolocator entfernen, wenn Sie ihn nicht benötigen.

Danke fürs Mitdenken @cguentherTUChemnitz , ich dachte auch, dass android.permission.ACCESS_BACKGROUND_LOCATION vom Geolocator oder einem anderen Plugin eingebunden werden könnte.

Daher habe ich alle AndroidManifest.xml-Dateien überprüft, die mit dem Geolocator-Plugin verbunden sind, konnte aber diese spezielle Berechtigung, die in der Codebasis erwähnt wird, nicht finden.

Morgen werde ich weitere Tests durchführen, die die .aab-Datei analysieren, wie Sie es erwähnt haben, und versuchen zu überprüfen, ob der Geolocator diesen Eintrag in die AndroidManifest.xml-Datei einfügt.

sorry für die späte Antwort, ich habe meine neue Version raus.
Ich musste das Nein, ich folge den Datenschutzrichtlinien nicht folgen im Formular für die Berechtigungserklärung aktivieren und das Formular dann aktualisieren, nachdem die neue Version ohne Hintergrundspeicherort im Store veröffentlicht wurde.

Ich kann jetzt auch bestätigen, dass ich dieses Plugin ohne ACCESS_BACKGROUND_LOCATION in der Manifestdatei des Bundles verwenden konnte. In meinem Fall hat es ein anderes Plugin in mein Projekt eingeführt.

@cguentherTUChemnitz vielen Dank für die Bestätigung. Möchten Sie mitteilen, welches Plugin dieses Problem verursacht hat? Dies könnte anderen ebenso helfen.

@arnerodde365 , keine Sorge, es scheint, dass dieses Problem durch ein anderes Plugin oder Paket verursacht werden könnte, das automatisch die Berechtigung ACCESS_BACKGROUND_LOCATION in die Datei AndroidManifest.xml einführt. Wenn Sie bereit sind, den Inhalt Ihres pubspec.yaml (oder des Abschnitts dependencies ) zu teilen, bin ich mehr als bereit, die Abhängigkeiten zu überprüfen, um festzustellen, welches Plugin das Problem verursacht.

Mir ist aufgefallen, dass dieses Problem auch im Hauptrepo von Flutter angesprochen wurde (siehe flatter/flatter#73461).

  flutter_widget_from_html_core:  ^0.4.3      
  flutter_local_notifications:    ^1.4.4+2
  flutter_appcenter_bundle:       ^3.2.0+1
  shared_preferences:             ^0.5.6+2
  flutter_translate:              ^1.6.0
  redux_persist:                  ^0.8.3
  flutter_redux:                  ^0.6.0
  url_launcher:                   ^5.4.10
  package_info:                   ^0.4.0+13
  flutter_map:                    ^0.8.2
  geolocator:                     ^6.1.7
  provider:                       ^4.3.2+2
  geojson:                        ^0.9.1
  shimmer:                        ^1.1.2
  toast:                          ^0.1.5
  http:                           ^0.12.0+4
  intl:                           ^0.16.1

Leider sind diese Informationen für andere nicht wirklich hilfreich. In meinem Fall hatte ich diese Berechtigung in einem eigenen nicht-öffentlichen Plugin, das vom selben Projekt verwendet wurde.

Allerdings ist die App nun freigegeben und das Problem ist behoben. Ich denke, es war ein Problem mit Google und ihrem Erklärungsformular, ich konnte die App nicht in der Beta-Version herunterladen, weil die Live-Version nicht den Datenschutzbestimmungen entsprach ...

@cguentherTUChemnitz und @arnerodde365 vielen Dank für das zusätzliche Feedback. Ich kann jetzt bestätigen, dass der Play Store Ihre App ablehnt, wenn Sie die Berechtigung ACCESS_BACKGROUND_LOCATION in Ihre AndroidManifest.xml-Datei aufnehmen.

Ich kann auch bestätigen, dass dies nicht automatisch vom Geolocator-Plugin hinzugefügt wird, sondern von anderen Plugins hinzugefügt werden könnte (zB das Location-Plugin fügt es automatisch hinzu). Für diejenigen, die wirklich eine Problemumgehung benötigen, können Sie Ihrer AndroidManifest.xml Folgendes als direktes untergeordnetes Element des <manifest ...> Tags hinzufügen:

 <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" tools:node="remove"/>

Dadurch wird sichergestellt, dass die Berechtigung ACCESS_BACKGROUND_LOCATION entfernt wird, auch wenn andere Plugins sie der Datei AndroidManifest.xml hinzufügen. Beachten Sie, dass dies bei Plugins, die auf diese Berechtigung angewiesen sind, unerwartetes Verhalten auslösen kann.

Ich werde dieses Problem jetzt schließen, da ich glaube, dass es nicht durch das Geolocator-Plugin selbst verursacht wird.

für diejenigen, die bla bla kopiert haben wie ich und bekommen:

The prefix "tools" for attribute "tools:node" associated with an element type "uses-permission" is not bound.

Sie müssen hinzufügen

    xmlns:tools="http://schemas.android.com/tools"

Oben wie:

```xml
xmlns:tools="http://schemas.android.com/tools"
package="com.example.your_app">
````

Diese Lösung kommt von:

(https://stackoverflow.com/questions/55334431/facing-below-error-toolsnode-associated-with-an-element-type-uses-permission)[https://stackoverflow.com/questions/55334431/facing- unter-Fehler-Toolsnode-verbunden-mit-einem-Elementtyp-verwendet-Berechtigung]

Es stellt sich heraus, dass die Android-Plattform selbst die Berechtigung: ACCESS_BACKGROUND_LOCATION während der Installation Ihrer App einfügt und daher möglicherweise kein Fehler an diesem Plugin ist. Sie können mehr über diesen Link lesen: https://developer.android.com/about/versions/10/privacy/changes#app -access-device-location
Welche Staaten:

Wenn Ihre App auf Android 10 oder höher läuft, aber auf Android 9 (API-Level 28) oder niedriger abzielt, wendet die Plattform das folgende Verhalten an:

Wenn Ihre App a . deklariertfür ACCESS_FINE_LOCATION oder ACCESS_COARSE_LOCATION fügt das System automatisch a-Element für ACCESS_BACKGROUND_LOCATION während der Installation.
Wenn Ihre App entweder ACCESS_FINE_LOCATION oder ACCESS_COARSE_LOCATION anfordert, fügt das System der Anfrage automatisch ACCESS_BACKGROUND_LOCATION hinzu.

Ich habe das offizielle Beispiel für den Geolocator in .apk (signierter Build) erstellt und in den Play Store hochgeladen.

Problem besteht.

"Ihre Erklärung zur Berechtigung zum Standort im Hintergrund muss aktualisiert werden."

AndroidManifest.xml ist sauber - keine Berechtigungen deklariert.
.apk-Details (auf der Admin-Seite des Play Stores) zeigen keine angeforderten Berechtigungen an.

Beta-Kanal (da die Baseflow-Vorlage die entsprechende Dart-Version erfordert).

[✓] Flutter (Kanal Beta, 1.25.0-8.3.pre, unter Linux, Gebietsschema en_US.UTF-8)
• Flutter-Version 1.25.0-8.3.pre unter /home/anand/flatter
• Framework-Revision 5d36f2e7f5 (vor 11 Tagen), 2021-01-14 15:57:49 -0800
• Motorrevision 7a8f8ca02c
• Dart-Version 2.12.0 (Build 2.12.0-133.7.beta)

[übersprungen]

PS
Vielleicht ist es dieses Problem (alte .apk mit ACCESS_BACKGROUND_LOCATION-Berechtigung):
https://stackoverflow.com/questions/65789352/google-asks-for-location-permission-declaration-for-new-android-app-release/65849925

PPS Ja, ich konnte ein offizielles Geolocator-Beispiel für interne Tests ohne Fehler veröffentlichen. Ich lösche diesen Beitrag hier nicht, damit andere Benutzer diesen Fall finden können - vielleicht ist es nützlich.

Auch wenn das Problem nicht vom Plugin Geolocation kommt, hat jemand eine Lösung gefunden?

Ich habe denselben Fehler: Ich verwende nur Geolocation im Vordergrund, ich habe nicht die Berechtigung ACCESS_BACKGROUND_LOCATION in meinem Manifest, aber Google Play lehnt meine App ab.

Background location access not declared
We detected that your app contains at least one feature that requests access to location in the background, 
however  your permission declaration form did not reflect this. 
Please log in to your Play Console to resubmit your location declaration form.
You may either remove location in the background from your app or indicate that the usage is in the background.

Danke für deine Antwort

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen