Berharap untuk mencetak posisi, ini kodenya:
Geolocator geo = Geolocator ();
Posisi pos =
menunggu geo.getCurrentPosition (diinginkanAccuracy: LocationAccuracy.high);
cetak (pos);
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?
Emulator iPhone 11 di studio Android
Versi: 1.x
Peron:
: iphone: iOS
@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":
ya, saya juga mendapat kesalahan pada plugin ini di simulator ios. saya mendapatkan log ini di konsol.
ya, saya juga mendapat kesalahan pada plugin ini di simulator ios. saya mendapatkan log ini di konsol.
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
.
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).
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":