1.5 KiB
1.5 KiB
iOS Location Flow (Dumon Client)
Tujuan: memastikan getLatestPosition() tidak mengembalikan default (lat/lon 0, accuracy 999) di iOS.
Aturan utama
getLatestPosition()hanya mengembalikan snapshot terakhir darididUpdateLocations.- Jika belum ada update lokasi, hasilnya akan default.
- Jadi,
startPositioning()wajib dipanggil dan update pertama harus diterima sebelumgetLatestPosition()dipakai sebagai sumber data utama.
Urutan yang benar
checkAndRequestPermissions()dipanggil saat aplikasi siap meminta lokasi.- Jika
location: granted, lanjut; jikadenied, hentikan flow dan minta user aktifkan izin. - Panggil
startPositioning()sekali. - Tunggu event
onPositionUpdatepertama. - Gunakan data dari event pertama sebagai sumber posisi awal.
getLatestPosition()baru dipakai setelah event pertama (sebagai snapshot tambahan/fallback).
Contoh urutan (pseudo)
await checkPermission(); // harus granted
await continuousWatchPosition(); // startPositioning
await waitForFirstOnPositionUpdate(); // resolve saat listener pertama
const pos = await getGeoloc(); // sekarang safe
Checklist debugging
- Pastikan
initiateLocationState()dipanggil sebelum flow yang butuh posisi. - Pastikan
checkPermission()sukses sebelumcontinuousWatchPosition(). - Pastikan ada log yang membuktikan
onPositionUpdateterpanggil. - Jangan panggil
getLatestPosition()terlalu awal (sebelum update pertama).