Flutter-geolocator: Lokasi tidak berfungsi pada emulator IOS

Dibuat pada 4 Jun 2020  ·  12Komentar  ·  Sumber: Baseflow/flutter-geolocator

🐛 Laporan Bug

Perilaku yang diharapkan

Berharap untuk mencetak posisi, ini kodenya:
Geolocator geo = Geolocator ();
Posisi pos =
menunggu geo.getCurrentPosition (diinginkanAccuracy: LocationAccuracy.high);
cetak (pos);

Langkah reproduksi

Ini berfungsi pada posisi emulator Android yang dicetak ke konsol.
Tidak berfungsi pada emulator iOS, tidak ada yang dicetak dan jika saya menambahkan pernyataan cetak lain setelah print (pos), itu juga tidak dicetak. Saya menduga itu tidak pernah mendapat posisi jadi "menunggu" selamanya?

Konfigurasi

Emulator iPhone 11 di studio Android

Versi: 1.x

Peron:
: iphone: iOS

ios in progress bug

Komentar yang paling membantu

@LarryJing Saya tidak dapat mereproduksi masalah ini, apakah Anda benar-benar mensimulasikan pembaruan lokasi? Pada simulator iOS, Anda perlu secara aktif menetapkan lokasi menggunakan opsi menu berikut: "Fitur" -> "Lokasi":

Screenshot 2020-06-04 at 13 21 49

Semua 12 komentar

@LarryJing Saya tidak dapat mereproduksi masalah ini, apakah Anda benar-benar mensimulasikan pembaruan lokasi? Pada simulator iOS, Anda perlu secara aktif menetapkan lokasi menggunakan opsi menu berikut: "Fitur" -> "Lokasi":

Screenshot 2020-06-04 at 13 21 49

ya, saya juga mendapat kesalahan pada plugin ini di simulator ios. saya mendapatkan log ini di konsol.
Screenshot 2020-06-04 at 6 42 49 PM

ya, saya juga mendapat kesalahan pada plugin ini di simulator ios. saya mendapatkan log ini di konsol.
Screenshot 2020-06-04 at 6 42 49 PM

Saya juga mendapat kesalahan yang sama.

`` dokter flutter
[✓] Flutter (Saluran stabil, v1.17.2, di Mac OS X 10.15.4 19E287, lokal en-JP)

[✓] Rantai alat Android - kembangkan untuk perangkat Android (SDK Android versi 29.0.3)

[✓] Xcode - kembangkan untuk iOS dan macOS (Xcode 11.5)
[✓] Android Studio (versi 4.0)
[!] IntelliJ IDEA Ultimate Edition (versi 2018.2.2)
✗ Plugin Flutter tidak terpasang; ini menambahkan fungsionalitas khusus Flutter.
✗ Plugin Dart tidak terpasang; ini menambahkan fungsionalitas khusus Dart.
[✓] VS Code (versi 1.45.1)
[✓] Perangkat terhubung (1 tersedia)
``

versi: geolocator: 5.3.2

simulator: iPhone 11 / Software Version 13.5

kesalahan tidak terjadi saat versi modul berubah menjadi 5.3.1 .

Screenshot 2020-06-04 at 8 15 06 PM
Dengan menambahkan izin pembaruan lokasi, masalah ini teratasi

Saya juga mengalami ini. Saya tidak ingin meminta lokasi di latar belakang, hanya di latar depan. Saya berharap itu berarti saya tidak perlu mengaktifkan mode latar belakang.

Ini memang kesalahan yang ditayangkan secara tidak sengaja. Saya akan memperbaikinya nanti hari ini / besok. Sampai saat itu, aktifkan pembaruan lokasi di latar belakang atau tetap gunakan 5.3.1

Saya baru saja merilis hotfix (versi 5.3.2 + 1) yang seharusnya memperbaiki masalah ini. Opsi untuk mengaktifkan pembaruan lokasi Backgroup sekarang dapat dikonfigurasi menggunakan kunci EnableBackgroundLocationUpdates di Info.plist (lihat juga README.md di bagian iOS).

Terima kasih semuanya telah membantu men-debug ini. Beri tahu saya jika berfungsi dengan benar lagi.

Perbaikan terkonfirmasi, menutup masalah.

Halo, saya baru di sini menggunakan layanan geolokasi dengan flutter dan saya telah menemukan proyek ini, terlihat bagus, tetapi saya memiliki masalah ketika saya mencoba untuk mendapatkan lokasi saat ini, aplikasi berhenti dan ditutup setelah menekan tombol sederhana untuk mendapatkan lokasi ...

Ini adalah kode saat ini yang saya gunakan di event handler onPress di kelas dummy:

GeolocationStatus geolocationStatus  = await Geolocator().checkGeolocationPermissionStatus();

if (geolocationStatus == GeolocationStatus.granted) {
  Position position = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
  print('position $position');
}

dan ini adalah versi paket yang saya gunakan di pubspec.yaml :

geolocator: ^5.3.2+2

Dan ini adalah kunci yang telah saya tambahkan ke file info.plist :

  <!-- ...skipped by brevity -->
  <key>EnableBackgroundLocationUpdates</key>
  <true/>
  <key>NSLocationWhenInUseUsageDescription</key>
  <string>This app needs access to location when open.</string>
  <key>NSLocationAlwaysUsageDescription</key>
  <string>This app needs access to location when in the background.</string>
  <key>NSLocationAlwaysAndWhenInUsageDescription</key>
  <string>Always And In Use Permission</string>
  <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
  <string>This app needs access to location when open and in the background.</string>
  <!-- skipped by brevity... -->

@mvanbeusekom ada ide apa yang menurut Anda saya lakukan salah?

@mvanbeusekom , tautan tampaknya tidak berfungsi dan selain masalah ini, saya tidak dapat menemukan referensi apa pun terkait EnableBackgroundLocationUpdates . Suka paket ini btw ..

@markbeij , perbaiki tautan yang disebutkan adalah bagian dari rilis 5.3.1. Saat ini kami menggunakan versi 6.1.6 yang jauh lebih baik yang memiliki struktur folder yang diperbarui untuk mendukung arsitektur plugin federasi (yang membuatnya lebih mudah untuk mendukung banyak platform).

Tautan saat ini ke README.md adalah: https://github.com/Baseflow/flutter-geolocator/blob/master/README.md

Bagian tentang mode latar belakang adalah:

Jika Anda ingin menerima pembaruan saat Aplikasi Anda berada di latar belakang, Anda juga perlu menambahkan kemampuan Mode Latar Belakang ke proyek XCode Anda (Proyek> Penandatanganan dan Kapabilitas> tombol "+ Kapabilitas") dan pilih Pembaruan Lokasi. Berhati-hatilah dengan ini, Anda perlu menjelaskan secara detail kepada Apple mengapa Aplikasi Anda membutuhkan ini saat mengirimkan Aplikasi Anda ke AppStore. Jika Apple tidak puas dengan penjelasan, Aplikasi Anda akan ditolak.

Ini pada dasarnya akan menambahkan parameter EnableBackgroundLocationUpdates ke Info.plist . Perhatikan bahwa geolocator tidak mendukung berjalan di latar belakang dan tidak menyediakan cara apa pun untuk menerima pembaruan saat berjalan di latar belakang. Saat ini, satu-satunya hal yang akan dilakukan EnableBackgroundLocationUpdates adalah memberi tahu platform untuk terus mendengarkan pembaruan lokasi di platform saat aplikasi berada di latar belakang (tidak ada yang dipanggil atau dieksekusi jika tidak).

Apakah halaman ini membantu?
0 / 5 - 0 peringkat