Flutter-geolocator: Kemungkinan untuk mengakses lokasi hanya di latar depan

Dibuat pada 4 Okt 2020  ·  28Komentar  ·  Sumber: Baseflow/flutter-geolocator

Permintaan Fitur

Selamat pagi semuanya! Google telah memperbarui kebijakan Izin & Izin Lokasi yang harus dipatuhi aplikasi agar dapat dipublikasikan di Google Play .

Kebijakan baru membatasi kemungkinan untuk mengakses lokasi pengguna di latar belakang: akan sangat bagus jika memiliki kemungkinan untuk mengakses lokasi di latar depan saja.

Khususnya, sekarang perlu meminta izin ACCESS_BACKGROUND_LOCATION dalam manifes, dan mengikuti panduan yang disediakan di sini .

Jika aplikasi tidak sesuai dengan kebijakan baru, pembaruan ditolak dengan pesan kesalahan yang mirip dengan ini
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.

Kontekstualisasikan fiturnya

Harus ada dua fungsi baru, yang dapat diimplementasikan baik melalui fungsi baru atau dengan menambahkan parameter ke yang sudah ada:

  1. Minta lokasi latar depan saja
  2. Akses lokasi latar depan, jika tersedia, dan berikan pengecualian lainnya.

Jelaskan fiturnya

Dengan modifikasi yang diusulkan, kerangka kerja harus mengakses lokasi pengguna hanya saat aplikasi aktif, tanpa melakukan aktivitas apa pun saat aplikasi diletakkan di latar belakang atau dimatikan.

Platform yang terpengaruh (tandai semua yang berlaku)

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

Komentar yang paling membantu

@cguentherTUChemnitz dan @arnerodde365 terima kasih telah memberikan umpan balik tambahan. Sekarang saya dapat mengonfirmasi bahwa Play Store akan menolak aplikasi Anda jika Anda menyertakan izin ACCESS_BACKGROUND_LOCATION di file AndroidManifest.xml Anda.

Saya juga dapat mengonfirmasi bahwa ini tidak secara otomatis ditambahkan oleh plugin Geolocator, tetapi dapat ditambahkan oleh plugin lain (misalnya, plugin Lokasi menambahkannya secara otomatis). Bagi mereka yang benar-benar membutuhkan solusi, Anda dapat menambahkan yang berikut ini ke AndroidManifest.xml Anda sebagai turunan langsung dari tag <manifest ...> :

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

Ini akan memastikan izin ACCESS_BACKGROUND_LOCATION akan dihapus bahkan ketika plugin lain menambahkannya ke file AndroidManifest.xml. Perhatikan bahwa ini dapat memicu perilaku tak terduga untuk plugin yang bergantung pada izin ini.

Saya akan menutup masalah ini sekarang karena saya yakin itu bukan disebabkan oleh plugin geolocator itu sendiri.

Semua 28 komentar

Hai Fulvio, adakah yang bisa menemukan solusi? Saya juga dengan masalah yang sama.

saya juga dengan masalah yang sama. Sebenarnya aplikasi saya tidak menggunakan lokasi di latar belakang. Tapi google play mengatakan kepada saya: Anda menggunakan lokasi di latar belakang. Saya pikir karena plugin ini, aplikasi memiliki izin untuk mengakses lokasi latar belakang.

Plugin tidak mengakses lokasi di latar belakang, ini adalah fitur yang banyak diminta tetapi saya belum dapat mengimplementasikannya.

Bisakah Anda memeriksa apakah Anda memiliki izin ACCESS_BACKGROUND_LOCATION tercantum dalam file AndroidManifest.xml Anda? Jika demikian, silakan hapus, plugin ini tidak diperlukan untuk berfungsi.

Kami juga mengalami masalah yang sama... Kami telah menghapus izin dari file manifes, mengirim tambalan lain, tetapi google terus menolak pembuatannya.

Selamat pagi semuanya, terima kasih @mvanbeusekom atas pertimbangan Anda.

@marcuslindemannrohden Saya belum berhasil merilis versi baru aplikasi di Play Store tanpa mengajukan pengecualian, yaitu menyatakan bahwa aplikasi tidak sesuai dengan kebijakan baru.

Saya belum menambahkan ACCESS_BACKGROUND_LOCATION ke manifes, tetapi sejauh yang saya pahami dari sumber daya Google ini , izin telah ditambahkan secara otomatis karena kami menargetkan versi API yang lebih rendah dari 29.

@mvanbeusekom (dan tentu saja pertanyaan ini ditujukan kepada semua pengguna perpustakaan ini 😊) apakah Anda berhasil menerbitkan atau memperbarui aplikasi selama bulan Oktober? Berbagi pengalaman Anda dalam hal ini akan sangat membantu!

Selamat pagi @fbambusi , terima kasih banyak atas umpan balik ini.

Saya belum mengirimkan aplikasi ke play store yang berisi plugin ini sejak Oktober, jadi saya belum mengalami perilaku ini. Namun saya akan menyelami materi yang disediakan dan melihat apakah saya dapat memahaminya dan memberikan pembaruan di sini untuk membahas kemungkinan solusi. Saat ini saya sedang mengerjakan pemecahan masalah #546 dan #556, dan akan mengambil ini segera setelahnya (seharusnya ada di suatu tempat selama minggu depan).

Jika seseorang memiliki saran tentang solusi yang mungkin, beri tahu saya, itu akan sangat dihargai

Plugin tidak mengakses lokasi di latar belakang, ini adalah fitur yang banyak diminta tetapi saya belum dapat mengimplementasikannya.

Bisakah Anda memeriksa apakah Anda memiliki izin ACCESS_BACKGROUND_LOCATION tercantum dalam file AndroidManifest.xml Anda? Jika demikian, silakan hapus, plugin ini tidak diperlukan untuk berfungsi.

Saya tidak ingat kapan saya menambahkan izin ini tetapi saya menghapus izin ini kemarin dan mengirimkan aplikasi ke google. terakhir sekarang google menyetujui aplikasi saya.
Anda harus menyatakan bahwa aplikasi Anda tidak menggunakan lokasi di latar belakang pada formulir deklarasi konsol google play

Hai teman-teman, baru saja mendapat persetujuan dari Google Play.
Saya telah menemukan bahwa kelas PermissionManager di dalam perpustakaan tampaknya menyertakan izin "ACCESS_BACKGROUND_LOCATION".
Saya telah memodifikasi kelas secara lokal dengan menghapus semua yang terkait dengan lokasi latar belakang dan setiap kondisi yang dapat mengembalikannya, untuk hanya menggunakan izin "ACCESS_FINE_LOCATION" dan "ACCESS_COARSE_LOCATION", dikirimkan ke google kemarin dan disetujui.

Saya tidak dapat memastikan apakah itu benar-benar berdampak pada persetujuan tetapi jika ada yang membutuhkan
ikuti kelas yang dimodifikasi untuk tidak menggunakan lokasi latar belakang.

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;
    }

}

Hai @fbambusi , @marcuslindemannrohden , @eniserkaya ,

Saya telah membaca tentang ini dan tampaknya masalah utamanya adalah Anda harus memastikan bahwa ketika mendengarkan aliran posisi (menggunakan metode Geolocator.getPositionStream() , Anda perlu memastikan bahwa Anda berhenti mendengarkan aliran streaming (batalkan langganan) saat aplikasi Anda dijeda (diletakkan di latar belakang).

Perhatikan juga bahwa versi 6.0.0 hingga 6.1.1 berisi bug yang mungkin membuat aliran posisi aktif jika Anda memanggil metode getCurrentPosition saat Anda memiliki aliran posisi aktif (lihat masalah #485 dan #541). Masalah ini diselesaikan di versi 6.1.2.

Untuk menyimpulkan:

  1. Pastikan Anda tidak menyertakan ACCESS_BACKGROUND_LOCATION di file AndroidManifest.xml Anda;
  2. Pastikan Anda berhenti berlangganan / membatalkan aliran posisi aktif saat aplikasi Anda dipindahkan ke latar belakang;
  3. Pastikan Anda memperbarui plugin geolocator ke versi 6.1.2.

Beberapa informasi lebih lanjut dapat ditemukan di sini:

Sedikit komentar pada kode yang @marcuslindemannrohden hapus dari kelas PermissionManager , kode ini hanya akan meminta izin latar belakang jika izin ACCESS_BACKGROUND_LOCATION tercantum dalam file AndroidManifest.xml. Jika tidak ada, itu tidak akan diminta dan karena itu tidak memengaruhi Aplikasi sama sekali dan juga tidak boleh menjadi alasan bagi Google untuk menolak aplikasi Anda.

PS beri tahu saya jika ini membantu. Saya telah mengirimkan beberapa aplikasi menggunakan plugin ini ke Google Play Store semuanya tanpa masalah meskipun mereka tidak menggunakan fitur getPositionStream . Mereka hanya membutuhkan fitur getLastKnownPosition dan getCurrentPosition . Jadi umpan balik lain tentang topik ini sangat dihargai.

Ada pembaruan tentang ini? Saya kesulitan mendapatkan aplikasi saya disetujui

Mendapat balasan yang sama:

Akses lokasi latar belakang tidak dideklarasikan Kami mendeteksi bahwa aplikasi Anda berisi setidaknya satu fitur yang meminta akses lokasi latar belakang, namun Anda belum mengirimkan formulir pernyataan izin untuk fitur ini. Harap masuk ke Konsol Play Anda dan kirimkan formulir pernyataan.

Saya hanya menggunakan getCurrentPosition,
Saya tidak menyertakan izin ACCESS_BACKGROUND_LOCATION, hanya ACCESS_FINE_LOCATION,
Saya menggunakan versi terbaru 6.1.7

Saya menargetkan API level 29 dan dari apa yang saya pahami dari Developers.android , menambahkan jenis layanan latar depan diperlukan untuk 29 dan di atasnya.

@ arnerodde365, membaca dokumentasi yang Anda berikan sepertinya semua yang perlu Anda lakukan adalah menambahkan <service deklarasi untuk Anda AndroidManifest.xml berkas dan mengatur android:foregroundServiceType properti untuk 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>

Perhatikan bahwa deklarasi <service ...></service> harus terdaftar sebagai anak dari deklarasi <application> .

Akan lebih bagus jika Anda bisa mencobanya dan beri tahu saya jika ini menyelesaikan masalah. Jika demikian saya akan memperbarui dokumentasi dan memastikan ini disebutkan dalam file README.md.

Ya saya akan memberi tahu Anda
Tapi saya agak baru dalam pengembangan Aplikasi dan saya tidak tahu apa yang harus dimasukkan ke dalam Android:name= ""

Saya kira ini harus menjadi nama layanan dari paket flutter-geolocator?

@arnerodde365 bisa apa saja yang Anda inginkan. Ini adalah nilai yang ditentukan pengguna jadi beri nama sesuatu yang bagus ;)

Aplikasi masih ditolak dengan balasan yang sama :(

Perubahan apapun? Saya telah mengkompilasi dan menargetkan versi SDK ke 29, TIDAK menyertakan izin latar belakang dalam file AndroidManifest.xml dan di penjelajah app bundle itu masih menunjukkan bahwa saya meminta izin lokasi latar belakang.

Untuk menjaga agar loop lebih pendek, saya akan merekomendasikan untuk membangun Android appbundle melalui:

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

Ekstrak file .aab dan cari app-release/base/manifest/AndroidManifest.xml

File Manifes ini harus diuraikan oleh app-store. Selama ada entri [...]android.permission.ACCESS_BACKGROUND_LOCATION[...] appstore akan menolak tanpa penjelasan yang tepat mengapa Anda membutuhkannya.

Masalahnya di sini adalah, beberapa plugin flutter memang memperkenalkan hal ini sendiri, seperti geolocator atau plugin lokasi juga.

Jadi poin diskusi di sini perlu diubah ke cara menghapus entri izin lokasi latar belakang dari geolocator, jika Anda tidak membutuhkannya.

Terima kasih telah memikirkan @cguentherTUChemnitz , saya juga berpikir android.permission.ACCESS_BACKGROUND_LOCATION mungkin digabungkan oleh Geolocator atau plugin lain.

Oleh karena itu saya memeriksa semua file AndroidManifest.xml yang terkait dengan plugin Geolocator tetapi tidak dapat menemukan izin khusus ini yang disebutkan dalam basis kode.

Besok saya akan menjalankan tes tambahan menganalisis file .aab seperti yang Anda sebutkan dan mencoba memverifikasi apakah Geolocator memasukkan entri ini ke dalam file AndroidManifest.xml.

maaf atas respon yang terlambat, saya sudah mengeluarkan versi baru saya.
Saya harus memeriksa Tidak, saya tidak mengikuti pedoman kebijakan privasi dalam formulir pernyataan Izin, dan kemudian memperbarui formulir setelah versi baru tanpa lokasi latar belakang dirilis ke toko.

Sekarang saya juga dapat mengonfirmasi, bahwa saya dapat menggunakan plugin ini tanpa ACCESS_BACKGROUND_LOCATION dalam file manifes bundel. Dalam kasus saya, plugin lain memang memperkenalkannya di proyek saya.

@cguentherTUChemnitz terima kasih banyak telah mengonfirmasi ini. Maukah Anda membagikan plugin mana yang menjadi penyebab masalah ini? Ini mungkin membantu orang lain juga.

@arnerodde365 , jangan khawatir tentang itu, tampaknya masalah ini mungkin disebabkan oleh plugin atau paket lain yang secara otomatis memperkenalkan izin ACCESS_BACKGROUND_LOCATION ke file AndroidManifest.xml. Jika Anda bersedia membagikan konten pubspec.yaml (atau bagian dependencies ) saya lebih dari bersedia untuk memeriksa dependensi untuk melihat apakah saya dapat menemukan plugin mana yang menyebabkan masalah.

Saya perhatikan bahwa masalah ini juga telah diangkat pada repo Flutter utama (lihat flutter/flutter#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

Sayangnya informasi ini tidak terlalu berguna bagi orang lain. Dalam kasus saya, saya memiliki izin ini di plugin non-publik sendiri, yang digunakan oleh proyek yang sama.

Namun, aplikasi sekarang dirilis dan masalahnya terpecahkan. Saya pikir itu masalah dengan google dan formulir deklarasi mereka, saya tidak bisa mendapatkan aplikasi dalam Beta karena versi Live tidak mengikuti Kebijakan Privasi ...

@cguentherTUChemnitz dan @arnerodde365 terima kasih telah memberikan umpan balik tambahan. Sekarang saya dapat mengonfirmasi bahwa Play Store akan menolak aplikasi Anda jika Anda menyertakan izin ACCESS_BACKGROUND_LOCATION di file AndroidManifest.xml Anda.

Saya juga dapat mengonfirmasi bahwa ini tidak secara otomatis ditambahkan oleh plugin Geolocator, tetapi dapat ditambahkan oleh plugin lain (misalnya, plugin Lokasi menambahkannya secara otomatis). Bagi mereka yang benar-benar membutuhkan solusi, Anda dapat menambahkan yang berikut ini ke AndroidManifest.xml Anda sebagai turunan langsung dari tag <manifest ...> :

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

Ini akan memastikan izin ACCESS_BACKGROUND_LOCATION akan dihapus bahkan ketika plugin lain menambahkannya ke file AndroidManifest.xml. Perhatikan bahwa ini dapat memicu perilaku tak terduga untuk plugin yang bergantung pada izin ini.

Saya akan menutup masalah ini sekarang karena saya yakin itu bukan disebabkan oleh plugin geolocator itu sendiri.

bagi mereka yang bla bla copy paste seperti yang saya lakukan dan mendapat:

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

Anda perlu menambahkan

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

Di bagian atas seperti:

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

Solusi ini berasal dari:

(https://stackoverflow.com/questions/55334431/facing-below-error-toolsnode-associated-with-an-element-type-uses-permission)[https://stackoverflow.com/questions/55334431/facing- di bawah-error-toolsnode-associated-with-an-element-type-uses-permission]

Ternyata Platform Android itu sendiri menyuntikkan izin: ACCESS_BACKGROUND_LOCATION selama instalasi aplikasi Anda dan karenanya mungkin bukan kesalahan dengan plugin ini. Anda dapat membaca lebih lanjut dari tautan ini: https://developer.android.com/about/versions/10/privacy/changes#app -access-device-location
Yang menyatakan:

Jika aplikasi Anda berjalan di Android 10 atau lebih tinggi tetapi menargetkan Android 9 (API level 28) atau lebih rendah, platform akan menerapkan perilaku berikut:

Jika aplikasi Anda mendeklarasikan aelemen untuk ACCESS_FINE_LOCATION atau ACCESS_COARSE_LOCATION, sistem secara otomatis menambahkanelemen untuk ACCESS_BACKGROUND_LOCATION selama instalasi.
Jika aplikasi Anda meminta ACCESS_FINE_LOCATION atau ACCESS_COARSE_LOCATION, sistem secara otomatis menambahkan ACCESS_BACKGROUND_LOCATION ke permintaan.

Saya telah membuat contoh resmi untuk geolocator ke .apk (build bertanda) dan mengunggah ke play store.

Masalah ada.

"Deklarasi izin lokasi latar belakang Anda perlu diperbarui."

AndroidManifest.xml bersih - tidak ada izin yang dideklarasikan.
Detail .apk (di halaman admin play store) tidak menunjukkan izin yang diminta.

Saluran beta (karena template aliran dasar memerlukan versi Dart yang sesuai).

[✓] Flutter (Saluran beta, 1.25.0-8.3.pre, di Linux, lokal en_US.UTF-8)
• Flutter versi 1.25.0-8.3.pre di /home/anand/flutter
• Revisi kerangka kerja 5d36f2e7f5 (11 hari yang lalu), 14-01-2020 15:57:49 -0800
• Revisi mesin 7a8f8ca02c
• Dart versi 2.12.0 (build 2.12.0-133.7.beta)

[dilewati]

PS
Mungkin masalah ini (.apk lama dengan izin ACCESS_BACKGROUND_LOCATION):
https://stackoverflow.com/questions/65789352/google-asks-for-location-permission-declaration-for-new-android-app-release/65849925

PPS Ya, saya dapat mempublikasikan contoh geolocator resmi ke pengujian internal tanpa kesalahan. Saya tidak menghapus posting ini di sini untuk memungkinkan pengguna lain menemukan kasus ini - mungkin ini akan berguna.

Bahkan jika masalah tidak datang dari plugin Geolocation, adakah yang menemukan solusi?

Saya mendapatkan kesalahan yang sama: Saya hanya menggunakan Geolokasi latar depan, saya tidak memiliki izin ACCESS_BACKGROUND_LOCATION dalam manifes saya, tetapi Google Play menolak aplikasi saya.

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.

Terima kasih atas jawaban anda

Apakah halaman ini membantu?
0 / 5 - 0 peringkat