Flutter-geolocator: iOS tidak meminta izin Lokasi

Dibuat pada 25 Jan 2019  ·  15Komentar  ·  Sumber: Baseflow/flutter-geolocator

Laporan Bug


Simulator iOS tidak meminta izin lokasi. Sepertinya perangkat lewati saja atau 'menggantung' dengan ini. Ketika saya mencoba untuk mendapatkan geolocator.getCurrentPosition secara manual (dengan menekan tombol) ia mengembalikan null . Untuk Android semua berfungsi seperti yang diharapkan. Saya telah memeriksa izin lokasi menggunakan geolocator.checkGeolocationPermissionStatus() dan itu
GeolocationStatus.unknown .

Perilaku yang diharapkan

Simulator iOS harus meminta izin pengguna untuk layanan lokasi.

Langkah-langkah reproduksi

Konfigurasi

Versi: 2.1.1

Platform:

  • [12.1] :iphone: iOS

Komentar yang paling membantu

@dstuff @kika @JStuve @StephanCassel ,
Aku telah memperbaikinya! Saya menggunakan di Info.plist izin ini NSLocationAlwaysUsageDescription bersama dengan NSLocationWhenInUseUsageDescription. Tetapi aplikasi diatur untuk menargetkan iOS 8, default Flutter. Tetapi NSLocationAlwaysUsageDescription hanya boleh digunakan dengan iOS 10+. Ini mengacaukan permintaan izin pada aplikasi iOS. Saya menghapus dan berhasil, meminta izin dan saya bisa mendapatkan lokasinya. Saya harap ini bisa membantu kalian juga.

Semua 15 komentar

Apa yang saya perhatikan adalah bahwa ketika aplikasi pertama kali diinstal dan mengakses layanan lokasi, sistem memunculkan dialog yang meminta izin dan pada saat yang sama checkPermissionStatus() mengembalikan unknown . Jika pengguna mengizinkan akses maka aplikasi dapat melanjutkan untuk mendapatkan Position .
Harus ada cara untuk menunggu pengguna mengizinkan atau menolak permintaan.

Saya mengalami masalah yang sama persis. Android berfungsi dengan baik tetapi di iOS saya telah menambahkan NSLocationWhenInUseUsageDescription , namun saya tidak pernah dimintai akses izin jadi checkGeolocationPermissionsStatus() selalu unknown . Ini juga pada perangkat fisik serta simulator.

Masalah yang sama selama berjam-jam. Android bekerja dengan baik. iOS memberi nol.
Saya Menghapus aplikasi iOS dari simulator dan memulai kembali. Setelah itu bekerja dengan sempurna. Puhhh.
Saya memiliki beberapa masalah awal karena informasi yang hilang di podfile. Ini mungkin menyebabkan masalah.

Hal yang sama di sini. Aplikasi yang dihapus dari perangkat dan simulator, diinstal ulang, hal yang sama.
Saat mencoba mendapatkan lokasi, pengecualian berikut muncul: ERROR_ALREADY_REQUESTING_PERMISSIONS

@dstuff @kika @JStuve @StephanCassel ,
Aku telah memperbaikinya! Saya menggunakan di Info.plist izin ini NSLocationAlwaysUsageDescription bersama dengan NSLocationWhenInUseUsageDescription. Tetapi aplikasi diatur untuk menargetkan iOS 8, default Flutter. Tetapi NSLocationAlwaysUsageDescription hanya boleh digunakan dengan iOS 10+. Ini mengacaukan permintaan izin pada aplikasi iOS. Saya menghapus dan berhasil, meminta izin dan saya bisa mendapatkan lokasinya. Saya harap ini bisa membantu kalian juga.

@cetorres Akhirnya mengerti! Saya membuat perubahan yang Anda rekomendasikan, selain itu saya juga menelepon checkGeolocationPermissionStatus sebelum getCurrentPosition jadi permintaan izin saya tidak terpicu!

Terima kasih! :bir:

versi: 3.0.0 ios juga tidak meminta akses izin.

Dari debugging di Xcode, tampaknya NSLocationAlwaysAndWhenInUseUsageDescription juga diperlukan. (Hanya NSLocationAlwaysUsageDescription dan NSLocationWhenInUseUsageDescription gagal secara diam-diam di Flutter)

Masalah yang sama, semuanya mengatakan itu terbukti, dan tidak ada yang berhasil. Tidak begitu yakin bagaimana menyelesaikannya.

Terima kasih banyak @cetorres! Saya sebenarnya menargetkan iOS 10+ tetapi saya masih harus menghapus NSLocationAlwaysUsageDescription untuk membuatnya berfungsi. Aplikasi saya tidak memerlukan info lokasi saat tidak digunakan, jadi ini cukup bagus.

Gila! Apple menyetujui aplikasi saya untuk TestFlight dengan...

Anda sekarang dapat menggunakan build ini untuk pengujian TestFlight atau mengirimkannya ke App Store.

tetapi juga mengirimi saya ini:

Kami mengidentifikasi satu atau beberapa masalah dengan pengiriman terbaru untuk aplikasi Anda, [dihapus] 1.0.0 (12). Pengiriman Anda berhasil, tetapi Anda mungkin ingin memperbaiki masalah berikut pada pengiriman berikutnya:

ITMS-90683: String Tujuan Tidak Ada di Info.plist - Kode aplikasi Anda merujuk pada satu atau beberapa API yang mengakses data pengguna yang sensitif. File Info.plist aplikasi harus berisi kunci NSLocationAlwaysUsageDescription dengan string tujuan yang menghadap pengguna yang menjelaskan dengan jelas dan lengkap mengapa aplikasi Anda membutuhkan data. Mulai Musim Semi 2019, semua aplikasi yang dikirimkan ke App Store yang mengakses data pengguna harus menyertakan string tujuan. Jika Anda menggunakan library atau SDK eksternal, mereka mungkin mereferensikan API yang memerlukan string tujuan. Meskipun aplikasi Anda mungkin tidak menggunakan API ini, string tujuan tetap diperlukan. Anda dapat menghubungi pengembang perpustakaan atau SDK dan meminta mereka merilis versi kode mereka yang tidak berisi API. Pelajari lebih lanjut (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

Jadi sepertinya aku masih berjalan di atas tali yang ketat di sini. Saya tidak dapat memutakhirkan plugin karena saya tidak ingin melewati rintangan AndroidX sekarang...

Apa yang kalian sarankan? Abaikan saja pesan "kami mengidentifikasi masalah"?

Pembaruan: Menambahkan ketiganya di bawah ini di info.plist berfungsi untuk saya. Apple juga senang.

NSLocationWhenInUseUsageDescription

NSLocationAlwaysAndWhenInUseUsageDescription

Terima kasih atas tipnya, @vejmartin

@kbrmimbyl Anda adalah penyelamat hidup. Saya kehilangan kunci "NSLocationAlwaysAndWhenInUseUsageDescription" di Info.plist dan itu menyebabkan masalah itu!!

Menarik bagi siapa saja yang telah memodifikasi info.plist di AndroidStudio dan bukan di XCode: Bagi saya itu berhasil ketika saya menghapus "NSLocationAlwaysAndWhenInUseUsageDescription" dan sebagai gantinya memilih "Privasi - Lokasi Selalu dan saat Menggunakan Deskripsi Penggunaan" yang sesuai di Xcode. Untuk beberapa alasan yang lain sudah diformat seperti itu, tapi yang ini tidak. Saya mengalami masalah yang sama yang disebutkan di atas, tetapi onError tidak memberi saya apa-apa. Async hanya menunggu dan tidak pernah dilanjutkan. Dan kemudian jika Anda hotReload, Anda mendapatkan ERROR_ALREADY_REQUESTING_PERMISSIONS, karena masih menunggu masukan untuk permintaan izin itu.
Menargetkan IOS11, di Android semuanya berfungsi dengan baik. Sekarang ini juga berlaku di iOS.

Saya mengalami masalah yang sama dengan web flutter pada perangkat iOS.
aplikasi tidak meminta dialog izin apa pun di iOS, tetapi berfungsi di windows dan perangkat android

Apakah halaman ini membantu?
0 / 5 - 0 peringkat