Flutter-geolocator: geolocator.getCurrentPosition membutuhkan waktu lama untuk mengembalikan posisi di IOS

Dibuat pada 30 Agu 2019  ·  72Komentar  ·  Sumber: Baseflow/flutter-geolocator

getCurrentPosition berfungsi dengan sangat baik di Android, tetapi di iOS butuh begitu banyak waktu untuk mengeksekusinya. Bisakah kamu memeriksanya? Terima kasih
Peron:

  • [x]: iphone: iOS
  • []: robot: Android
ios bug duplicate

Komentar yang paling membantu

@babaosoftware Terima kasih atas usaha Anda. Saya menguji masalah yang sama dan sampai pada kesimpulan yang sama seperti yang Anda lakukan. Kami akan menangani masalah ini dan terus mengabari Anda jika ada solusi untuk masalah ini.

Semua 72 komentar

Mengalami masalah yang sama. Tidak ditemukan apa yang menyebabkan perlambatan sejauh ini tetapi menggunakan Posisi Terakhir yang Diketahui sebagai solusi sementara untuk kasus saya ...

periksa apakah Info.plist Anda memiliki 3 kunci
NSLocationAlwaysUsageDescription
deskripsi Anda
NSLocationWhenInUseUsageDescription
deskripsi Anda
NSLocationAlwaysAndWhenInUseUsageDescription
deskripsi Anda

Masalah yang sama disini. Harus downgrade ke versi 4.0.3 dari plugin geolocator. Setiap versi setelah itu sangat lambat merespons di iOS.
Dan ya, @paulobreim Saya memiliki semua string yang diperlukan di Info.plist, jika tidak maka tidak akan merespons sama sekali.

Saya menggunakan plugin Lokasi untuk mendapatkan lokasi saat ini. Ini berfungsi dengan baik di Android dan iOS.

@ hungtran2492 Saya juga menggunakan plugin Lokasi, jauh lebih cepat dari ini.

@StijnWoerkom apa alasan

@ollydixon Saya menguji masalah ini pada beberapa perangkat IOS dan menyimpulkan bahwa masalahnya lebih pada perangkat daripada pada kodenya. Saya dapat membuka kembali masalah tersebut, tetapi saya tidak melihat ada masalah yang terjadi dengan masalah ini.

@StijnWoerkom jika membantu, saya melakukan demo aplikasi langsung dengan 4 pengguna dan lambat di semua ponsel mereka. (Semua iOS). Agak memalukan bagi saya karena simulator berfungsi dengan baik hanya di perangkat itu sangat lambat.

Saya menggunakan perpustakaan lain dan itu baik-baik saja (Lokasi untuk Flutter).

Versi 4.0.3 berfungsi dengan baik. Saya benar-benar menurunkan versi ke versi itu di aplikasi saya. Jadi itu harus menjadi sesuatu di perpustakaan itu sendiri. Melakukan pengujian dengan iPhone yang berbeda, konsisten, jadi saya ragu perangkatnya.

@ollydixon Terima kasih atas tanggapan Anda. Saya minta maaf atas kegagalan Anda dengan demo. Saya membuka kembali masalah tersebut dan akan menyelidiki lebih jauh hal ini. Bisakah Anda memberi tahu saya versi apa yang Anda gunakan?

@StijnWoerkom jangan khawatir, mereka tahu itu adalah versi alfa. Itu 5.1.3.

Versi apa pun setelah 4.0.3 memiliki masalah. Jadi itu pasti sesuatu yang diperkenalkan di 5.0.0.

@babaosoftware Dalam versi 5.0.0, kami mengonversi versi IOS dari Swift ke Objective-C, mengurangi ukuran biner akhir secara signifikan, serta menyelesaikan beberapa masalah kompatibilitas dengan plugin berbasis objektif-c lainnya.

@StijnWoerkom Saya tidak mempertanyakan perlunya konversi, hanya mengatakan bahwa itu menciptakan masalah ini, dan memberi petunjuk ke mana seseorang mungkin mulai memeriksanya.

Saya perhatikan bahwa Anda memberi tahu saya kemarin bahwa masalahnya dimulai dengan versi 5.0.0. Saya memeriksa semua fitur yang kami tambahkan dengan versi untuk menentukan apa penyebab masalahnya.

Izinkan saya menyarankan alternatif untuk mengisolasi masalah, jika masalah itu benar-benar ada.
Kita dapat membuat program kecil hanya dengan fungsi geolocator.getCurrentPosition, dan setiap orang dapat menguji program ini dan mengukur waktu pelaksanaannya.
Bagaimana menurut anda?

@paulobreim Saya akan melakukan hal itu malam ini (waktu AS bagian Timur). Saya akan memposting hasil saya segera setelah saya memilikinya.

Saya melakukan tes berikut:
Aplikasi:
impor ' paket: flutter / foundation.dart ';
impor ' paket: geolocator / geolocator.dart ';
void main () {
DateTime mulai = DateTime.now ();
getCurrentPosition (). lalu ((pos) {
DateTime end = DateTime.now ();
debugPrint ("rentang waktu = $ {end.difference (mulai) .inMilliseconds} ms");
});
}
Masa depangetCurrentPosition () async {
kembali menunggu Geolocator (). getCurrentPosition ();
}

di pubspec.yaml saya punya
geolocator: ^ 4.0.3 # Jangan tingkatkan versi - sangat lambat untuk merespons saat permulaan.
untuk tes pertama, dan
geolocator: ^ 5.1.4
untuk tes kedua.
Saya menguji menggunakan iPhone 6S, tetapi sebelumnya saya juga menggunakan perangkat yang lebih baru, jadi menurut saya perangkat tersebut tidak membuat perbedaan.
Tes pertama, dengan versi 4.0.3 menunjukkan waktu respon sekitar 100ms
Tes kedua, dengan versi 5.1.4. menunjukkan waktu respons sekitar 10 s - yaitu detik, bukan ms
Ini dia.

Saya mencoba mengujinya di Motorola Z2 Play dan iPhone, tetapi saya mendapat kesalahan di bawah dan tidak tahu harus berbuat apa.

Meluncurkan lib / main.dart pada Android SDK yang dibuat untuk x86 dalam mode debug ...
Memulai gradle ...
Mengatasi ketergantungan ...
Menjalankan tugas Gradle 'assembleDebug' ...

KEGAGALAN: Build gagal dengan pengecualian.

  • Apa yang salah:
    Eksekusi gagal untuk tugas ': app: preDebugBuild'.
    > Ketergantungan Android 'androidx. core: core 'memiliki versi berbeda untuk classpath compile (1.0.0) dan runtime (1.0.2). Anda harus menyetel versi yang sama secara manual melalui DependencyResolution

Saya tahu tidak ada hubungan dengan geolocator, tetapi saya tidak tahu untuk memperbaikinya.

'androidx. core: core 'memiliki versi berbeda untuk classpath compile (1.0.0) dan runtime (1.0.2)

Periksa ini:
https://github.com/flutter/flutter/issues/27254

Inilah pengujian saya untuk Android.
Saya meletakkan floatingActionButton dan menekan 10 kali

Geolocator UJI PERTAMA: ^ 4.0.3
Meluncurkan lib / main.dart di Moto Z2 Play dalam mode debug ...
Memulai gradle ...
Mengatasi ketergantungan ...
Menjalankan tugas Gradle 'assembleDebug' ...
Membuat build / app / outputs / apk / debug / app-debug.apk.
Menyinkronkan file ke perangkat Moto Z2 Play ...
I / flutter (11197): rentang waktu = 1006 ms
I / flutter (11197): rentang waktu = 1626 ms
I / flutter (11197): rentang waktu = 965 ms
I / flutter (11197): rentang waktu = 6024 ms
I / flutter (11197): rentang waktu = 991 ms
I / flutter (11197): rentang waktu = 971 ms
I / flutter (11197): rentang waktu = 6022 ms
I / zygote (11197): Lakukan pengumpulan cache sebagian kode, kode = 62KB, data = 51KB
I / zygote (11197): Setelah pengumpulan cache kode, kode = 62KB, data = 51KB
I / zygote (11197): Meningkatkan kapasitas cache kode menjadi 256 KB
I / flutter (11197): rentang waktu = 7866 ms
I / flutter (11197): rentang waktu = 940 ms
I / flutter (11197): rentang waktu = 6091 ms

Geolocator UJI KEDUA: ^ 5.1.4
Meluncurkan lib / main.dart di Moto Z2 Play dalam mode debug ...
Memulai gradle ...
Mengatasi ketergantungan ...
Menjalankan tugas Gradle 'assembleDebug' ...
Membuat build / app / outputs / apk / debug / app-debug.apk.
Menyinkronkan file ke perangkat Moto Z2 Play ...
I / flutter (11471): rentang waktu = 1043 ms
I / flutter (11471): rentang waktu = 5.927 ms
I / flutter (11471): rentang waktu = 8876 ms
I / flutter (11471): rentang waktu = 1052 ms
I / flutter (11471): rentang waktu = 5987 ms
I / flutter (11471): rentang waktu = 6316 ms
I / flutter (11471): rentang waktu = 5.948 ms
I / zygote (11471): Lakukan pengumpulan cache sebagian kode, kode = 62KB, data = 50KB
I / zygote (11471): Setelah pengumpulan cache kode, kode = 62KB, data = 50KB
I / zygote (11471): Meningkatkan kapasitas cache kode menjadi 256 KB
I / flutter (11471): rentang waktu = 934 ms
I / flutter (11471): rentang waktu = 6012 ms
I / flutter (11471): rentang waktu = 954 ms

Geolocator UJI KETIGA: ^ 5.1.4
(WHITOUT menunggu di geolocator menekan tombol 10 kali dengan cepat
Meluncurkan lib / main.dart di Moto Z2 Play dalam mode debug ...
Memulai gradle ...
Mengatasi ketergantungan ...
Menjalankan tugas Gradle 'assembleDebug' ...
Membuat build / app / outputs / apk / debug / app-debug.apk.
Menginstal build / app / outputs / apk / app.apk ...
Menyinkronkan file ke perangkat Moto Z2 Play ...
I / flutter (16122): rentang waktu = 1020 ms
I / flutter (16122): rentang waktu = 159 ms
I / flutter (16122): rentang waktu = 584 ms
I / flutter (16122): rentang waktu = 544 ms
I / flutter (16122): rentang waktu = 99 ms
I / flutter (16122): rentang waktu = 536 ms
I / flutter (16122): rentang waktu = 82 ms
I / zygote (16122): Lakukan pengumpulan cache sebagian kode, kode = 62KB, data = 50KB
I / zygote (16122): Setelah pengumpulan cache kode, kode = 62KB, data = 50KB
I / zygote (16122): Meningkatkan kapasitas cache kode menjadi 256 KB
I / flutter (16122): rentang waktu = 504 ms
I / flutter (16122): rentang waktu = 1381 ms
I / flutter (16122): rentang waktu = 946 ms

Meskipun saya tidak memeriksa sendiri masalahnya di Android, seperti yang dinyatakan oleh judul, masalah ini dibuka untuk iOS. Meskipun demikian, pengujian Anda menunjukkan hasil yang cukup tidak konsisten, dan saya tidak yakin apa yang dilakukan pengujian ketiga tanpa menunggu panggilan geolocator. Mungkin mengeposkan kode aplikasi Anda akan memperjelas hal itu.
Bagaimanapun, saya tetap menggunakan versi 4.0.3 dari perpustakaan untuk saat ini. Faktanya saya merilis aplikasi saya di toko apel baru-baru ini. Anda mungkin ingin memeriksanya di
http://apps.apple.com/us/app/apple-store/id1469322424

Ini adalah pengujian saya untuk iOS 12.4.4 iPhone 6

Geolocator UJI PERTAMA: ^ 4.0.3
Meluncurkan lib / main.dart pada iPhone PCB dalam mode debug ...
Menandatangani aplikasi iOS untuk penerapan perangkat menggunakan identitas pengembang: "Pengembang iPhone: Paulo Breim (Y34R2HBJ59)"
Menjalankan pemasangan pod ...
Menjalankan Xcode build ...
Pembuatan Xcode selesai. 23,7 d
Menginstal dan meluncurkan ...
Menyinkronkan file ke perangkat iPhone PCB ...
flutter: rentang waktu = 230 ms
flutter: rentang waktu = 92 ms
flutter: rentang waktu = 74 ms
flutter: rentang waktu = 80 ms
flutter: rentang waktu = 95 ms
flutter: rentang waktu = 87 ms
flutter: rentang waktu = 199 ms
flutter: rentang waktu = 58 ms
flutter: rentang waktu = 73 ms
flutter: rentang waktu = 70 ms

Geolocator UJI KEDUA: ^ 5.1.4
Meluncurkan lib / main.dart pada iPhone PCB dalam mode debug ...
Menandatangani aplikasi iOS untuk penerapan perangkat menggunakan identitas pengembang: "Pengembang iPhone: Paulo Breim (Y34R2HBJ59)"
Menjalankan pemasangan pod ...
Menjalankan Xcode build ...
Pembuatan Xcode selesai. 22,6 dtk
Menginstal dan meluncurkan ...
Menyinkronkan file ke perangkat iPhone PCB ...
flutter: rentang waktu = 12383 ms
flutter: rentang waktu = 10033 ms
flutter: rentang waktu = 10027 ms
flutter: rentang waktu = 10026 ms
flutter: rentang waktu = 10031 ms
flutter: rentang waktu = 10029 ms
flutter: rentang waktu = 10032 ms
flutter: rentang waktu = 10032 ms
flutter: rentang waktu = 10028 ms
flutter: rentang waktu = 10029 ms

babaosoftware, beri tahu saya jika Anda memerlukan pengujian lebih lanjut

@paulobim terima kasih atas usaha Anda. Ternyata menegaskan apa yang telah kita katakan selama ini, dan hasilnya konsisten. Versi pustaka geolocator, dimulai dengan 5.0.0 memiliki waktu respons yang tidak dapat diterima sekitar 10 detik untuk panggilan ke getCurrentPosition di platform iOS.
Hasil di Android tidak konsisten, tetapi beberapa menunjukkan waktu respons lebih dari 8 detik, yang juga mengkhawatirkan.
@StijnWoerkom Saya rasa ada cukup bukti bahwa ada sesuatu yang sangat salah dengan peningkatan perpustakaan dan memerlukan upaya untuk mengisolasi dan memperbaikinya.

@babaosoftware Terima kasih atas usaha Anda. Saya menguji masalah yang sama dan sampai pada kesimpulan yang sama seperti yang Anda lakukan. Kami akan menangani masalah ini dan terus mengabari Anda jika ada solusi untuk masalah ini.

Hal yang sama terjadi di sini di iOS 13.1.3 iPhone XR dengan versi terbaru GeoLocator. Dibutuhkan antara 8-10 detik untuk mendapatkan posisi saat ini

Bagi Anda yang kesulitan dengan getPosition lambat di iOS (misal membutuhkan 10+ s untuk mendapatkan informasi posisi), Anda dapat menggunakan paket alternatif ini seperti yang telah dikatakan sebelumnya di thread sebelumnya.

https://github.com/Lyokone/flutterlocation

Ini memuat informasi posisi dengan sangat cepat baik di Android maupun di iOS. (<1 dtk).

Saya mengalami kelambatan yang sama menggunakan versi terbaru. Apakah ada masalah / sisi buruk dengan tetap menggunakan versi 4.0.3?

Saya setuju dengan @cielo , saya menguji paket ini dan paket lokasi [ tautan ] dan perbedaan kecepatan terlihat jelas. Padahal, paket ini menawarkan lebih banyak fitur dan saya harap bug dalam penundaan ini diperbaiki (bagi saya itu tidak konsisten).

Saya hanya ingin menambahkan bahwa saya masih mengalami kelambatan ini juga. Berfungsi dengan baik pada emulator, tetapi membutuhkan lebih dari 10 detik pada perangkat Fisik Iphone 8 Plus.

efektif versi 4.0.3 bekerja dengan baik. Pengalaman saya di perangkat fisik ios, dengan versi 5.2.0, sangat tertunda dalam menemukan lokasi perangkat, dengan menurunkannya ke 4.0.3 masalah pemecahannya

Hai, Saya mengalami masalah ini di Android

kode saya sesederhana. Position position = await _geoLocator.getCurrentPosition();

Saya menggunakan Google Pixel 3A

saya juga :(
Saya menggunakan ^ 5.1.5
getCurrentPosition () sangat lambat baik Android, iOS

saya juga
iam menggunakan ^ 5.3.0
IOS 12.4 Iphone 5s.

Saya memiliki masalah yang sama, di iOS 13.4 beta iPhone XR
Berfungsi dengan baik di semua perangkat OS Android.

masalah yang sama masih, berfungsi dengan baik pada perangkat virtual tetapi penundaan 10 detik pada perangkat fisik

Mengalami masalah yang sama di iPhone 7, iOS 13.4 saya

Masalah yang sama di iPhone 7 dan IPhone X, IOS 13

Halo, masalah yang sama di perangkat iPhone X asli, iOS 13

Waktu mulai kami 10+ detik karena masalah ini, kembali ke 4.0.3 berfungsi

Sama di sini, iPhone 5s iOS 12.4.

Juga di iPhone 6s iOS 13.4

Saya juga mengalami masalah ini. iPhone 6s iOS 13.4

Masalah yang sama pada perangkat fisik, iPhone 8 iOS 13.4. getLastKnownLocation berfungsi dengan baik.

+1

Sama di sini menggunakan versi ^5.3.1 Geolocator di iPhone Xs dan iOS 13.3. Saya telah menurunkannya menjadi 4.0.3 dan itu sangat cepat! 🚀

Memiliki hasil lambat yang sama, di simulator IOS berfungsi seperti pesona, kemudian saya mencoba di ponsel sungguhan yang membutuhkan waktu sekitar 10 detik di setiap alamat yang berbeda, saya berjalan di sekitar beberapa rumah dan pertama kali selalu lambat, jika Anda mencoba lagi maka dimuat cepat.

Saya juga mencoba 4.0.3 dan berfungsi dengan baik, tetapi saya melihat banyak perbaikan dari 4.0.3 hingga ^ 5.3.1. ada rencana untuk memperbaikinya di cabang utama?

Saya perhatikan 4.0.3 tidak seakurat 5.3.1

Saya juga mengalami masalah yang sama. Menurunkan versi ke 4.0.3 menyelesaikan masalah bagi saya. Ini berfungsi dengan baik pada simulator ios tetapi menghabiskan waktu pada perangkat ios fisik saya (iPhone SE 2nd Gen).

Bagaimana masalah ini tidak mendapatkan perhatian lebih? Tentunya ini adalah masalah kerusakan plugin tingkat produksi. Ini tidak bisa digunakan di lingkungan hidup setelah v4.0.3.

Reproes di sini juga, iPhone 8.
Akuisisi pertama adalah 20+ detik pada perangkat keras aktual pada 5.3.1.
Perangkat keras yang sama, lokasi yang sama, akuisisi pertama ~ 2 detik pada 4.0.3.

Memiliki hasil lambat yang sama, di simulator IOS berfungsi seperti pesona, kemudian saya mencoba di ponsel sungguhan yang membutuhkan waktu sekitar 10 detik di setiap alamat yang berbeda, saya berjalan di sekitar beberapa rumah dan pertama kali selalu lambat, jika Anda mencoba lagi maka dimuat cepat.

Guy I telah menggunakan versi 4.0.3 untuk hasil terbaik dalam simulator dan perangkat iOS (iPhone 6s - 8)

Saya memiliki masalah yang sama dan pindah ke 4.0.3 tidak mudah karena saya harus versi mundur dan saya sudah meningkatkan ke Androidx. Saya menggunakan plugin lokasi flutter sebagai gantinya, jauh lebih cepat.

Mirip dengan apa yang orang lain katakan, saya melihat penundaan ~ 10 detik (hampir tepat) pada perangkat iOS fisik, tetapi tidak ada di simulator. Pelambatan ini terlihat di beberapa perangkat di seluruh tim saya.

Apakah ada niat untuk menerapkan perbaikan untuk versi yang lebih baru?

bisakah Anda mencoba mengubah akurasinya? yang ini berhasil untuk saya:
menunggu Geolocator (). getCurrentPosition (diinginkanAccuracy: LocationAccuracy.medium)

menunggu Geolocator (). getCurrentPosition (diinginkanAccuracy: LocationAccuracy.medium)
bekerja untuk saya.

Saya berada di 5.3.2 + 2 dan mencatat bahwa plugin ini jauh lebih lambat daripada plugin lokasi. Berdasarkan rekomendasi di sini, saya menurunkan versi ke 4.0.3 dan kecepatannya jauh lebih baik.

Juga memiliki masalah yang sama seperti di atas, ketika berjalan di Simulator v11.5 di mac, perbaikan di bawah ini juga berfungsi untuk GeoLocation terbaru, v ^ 5.3.2 + 2 pada saat penulisan ini.

Lokasi perangkat Simulator IOS tidak diatur secara default yang menyebabkan pengecualian, ini dapat diatur dengan mengklik di bilah menu atas.

Fitur -> Lokasi -> Pilih opsi

juga harus menurunkan versi ke 4,03 karena kinerja pada perangkat iOS yang sebenarnya.

Sama di sini, sangat lambat.

Saya memiliki masalah yang sama saat menggunakan versi 5.3.1.
Butuh waktu sekitar 10 detik untuk mendapatkan lokasi di hampir semua versi iPhone, iPad.
Mengubah Akurasi Lokasi (dari terbaik ke sedang), tampaknya menyelesaikan masalah.

sama di sini, diuji pada beberapa iPhone dari 6S ke atas, versi 5.3.2 - membutuhkan waktu 5-10 detik untuk mendapatkan lokasi

Sama di sini iPhone 8 membutuhkan waktu 5 detik untuk menentukan lokasi

Mungkin solusi saya tersembunyi di dalam teks:
Ketika saya mengubah LocationAccuracy (dari terbaik ke sedang), persingkat penundaan kurang dari satu detik, dan kadang-kadang responsnya langsung (setidaknya pada semua mesin yang saya uji).
Harap diperhatikan, bahwa LocationAccuracy yang "baik" tidak cukup baik.

Diperlukan hingga 100 detik (detik) di iPhoneSE saya untuk mendapatkan Posisi saat ini. Kadang-kadang dibutuhkan kurang dari satu detik dan kali berikutnya dibutuhkan hingga 100. Saya juga mencoba menggunakan paket Lokasi tetapi masalah yang sama tetap ada. Saya tidak dapat menurunkan versi ke 4.0.4 karena paket lain yang saya gunakan bergantung pada versi yang lebih tinggi. :(

Kami sedang bekerja keras untuk rilis baru yang akan menyelesaikan masalah ini. Lihat juga masalah # 430 dengan detail lebih lanjut tentang kemajuannya.

baru-baru ini mengalami masalah ini menggunakan geolocator: ^ 5.3.1
untuk memperbaikinya saya meningkatkan ke geolocator: ^ 5.3.2 + 2
set:
compileSdkVersion 28

dan akhirnya melakukannya
peningkatan flutter

yang tampaknya telah memperbaiki masalah tersebut.

menunggu Geolocator (). getCurrentPosition (diinginkanAccuracy: LocationAccuracy.medium)
bekerja untuk saya.

Kelas Geolocator () sekarang sudah tidak digunakan lagi dalam rilis terbaru ^ 6.0.0, bagaimana cara menggunakan PlaceMarker dan placeFromCoordinate

@mannnish , fungsionalitas geocoding telah dipindahkan ke pluginnya sendiri (khusus) yang disebut geocoding .

@mannnish , fungsionalitas geocoding telah dipindahkan ke pluginnya sendiri (khusus) yang disebut geocoding .

Terima kasih berhasil

Saya memperbarui ke versi terbaru, memperbaiki masalah untuk saya 👍👍👍

Saya memperbarui ke versi terbaru, memperbaiki masalah untuk saya 👍👍👍

Memang, meningkatkan ke ^6.1.14 membantu saya.

Saya memperbarui ke versi terbaru, memperbaiki masalah untuk saya 👍👍👍

Memang, meningkatkan ke ^6.1.14 membantu saya.

itu tidak bekerja untuk saya ................. katakanlah langkah-langkah yang harus saya ikuti

Saya memperbarui ke versi terbaru, memperbaiki masalah untuk saya 👍👍👍

Memang, meningkatkan ke ^6.1.14 membantu saya.

itu tidak bekerja untuk saya ................. katakanlah langkah-langkah yang harus saya ikuti

hm, saya baru saja mengupdate pubspec.yaml saya, mungkin Anda juga perlu menghapus pubpec.lock?

Sekarang lambat lagi lol (setidaknya di web)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat