Halaman ini menjelaskan praktik terbaik untuk meminta dan mengelola izin penggunaan lokasi di latar belakang.
Meminta izin akses lokasi "Selalu izinkan"
Mulai Android 14, aplikasi harus memiliki izin
ACCESS_BACKGROUND_LOCATION
untuk mengakses lokasi pengguna.
Navigation SDK menyertakan izin ini dalam file manifesnya, sehingga Anda tidak
perlu memintanya secara eksplisit (jika tidak diperlukan untuk tujuan lain), karena
penggabung manifes Gradle akan memastikan izin tersebut digabungkan dengan manifes aplikasi.
Namun, memiliki izin ACCESS_BACKGROUND_LOCATION
tidak cukup untuk
mengakses lokasi di latar belakang dan kami merekomendasikan agar Anda meminta izin akses lokasi "Selalu izinkan" dari pengguna. Hal ini memastikan bahwa aplikasi dapat berjalan di latar belakang dan menampilkan notifikasi, yang memaksimalkan akurasi lokasi selama navigasi.
Dialog harus menjelaskan kepada pengguna cara pemberian izin akan meningkatkan akurasi lokasi dan meningkatkan pengalaman navigasi mereka saat aplikasi berjalan di latar belakang.
Untuk mengetahui informasi selengkapnya tentang meminta akses lokasi kepada pengguna, lihat Meminta izin akses lokasi | Sensor dan lokasi | Android Developers dalam dokumentasi developer Android.
Memastikan pembersihan yang tepat untuk notifikasi navigasi
Untuk memastikan aplikasi Anda tidak mempertahankan notifikasi setelah tidak lagi diperlukan, pastikan Anda melakukan langkah-langkah pembersihan berikut:
- Setelah memanggil
startGuidance()
, pastikan untuk memanggilstopGuidance()
atauclearDestination()
. - Setelah mendaftarkan
ArrivalListener
, pastikan untuk membatalkan pendaftarannya. - Setelah mendaftarkan
RoadSnappedLocationProvider
, pastikan untuk membatalkan pendaftarannya.
Dengan menyelesaikan langkah-langkah ini, notifikasi tidak akan tetap aktif jika tidak lagi diperlukan, yang dapat menyebabkan baterai cepat habis dan kemungkinan kebocoran memori.
Saat memanggil ulang metode NavigationApi#initForegroundServiceManager, panggil NavigationApi#clearForegroundServiceManager terlebih dahulu
Jika aplikasi Anda menggunakan ForegroundServiceManager
, panggil
NavigationApi#clearForegroundServiceManager
sebelum memanggil
NavigationApi#initForegroundServiceManagerProvider
, dan jika Anda telah
menginisialisasi ForegroundServiceManager
, panggil
NavigationApi#initForegroundServiceManagerMessageAndIntent
. Anda dapat melakukannya untuk
memperbarui ID notifikasi atau konten notifikasi setelah Anda
menginisialisasi pengelola layanan latar depan.
Tentang batasan baru yang diperkenalkan di Android 14
Android 14 (Android U) memperkenalkan batasan baru pada aplikasi yang mengakses lokasi pengguna di latar belakang. Untuk membantu memitigasi perubahan ini, Navigation SDK diupdate dalam versi 5.4.0 untuk mengelola akses lokasi di latar belakang dengan lebih baik. Sebaiknya Anda juga memperbarui penerapan untuk memastikan aplikasi Anda terus memiliki akses ke data lokasi yang paling akurat.
Pengaruh perubahan di Android 14 terhadap Navigation SDK
Saat Anda memanggil
startGuidance()
di aplikasi, layanan latar depan akan mulai menampilkan notifikasi pengguna untuk
navigasi belokan demi belokan. Navigasi belokan demi belokan bergantung pada kemampuan untuk
mengakses lokasi pengguna guna memperbarui rute dan menampilkan panduan
visual dan audio yang benar. Mulai Android 14, mengakses lokasi presisi pengguna di latar belakang memerlukan izin dari pengguna. Secara default, jika
aplikasi tidak memiliki izin pengguna untuk akses lokasi di latar belakang dan
mencoba memulai layanan latar depan untuk update lokasi, sistem akan menampilkan
SecurityException
, sehingga menyebabkan aplikasi error.
Cara Navigation SDK mengurangi masalah ini
Mulai dari versi 5.4.0, Navigation SDK menangani SecurityException
ini
tanpa memengaruhi aplikasi, sehingga navigasi dapat terus berjalan di
latar belakang. Selain itu, Navigation SDK menyertakan izin
ACCESS_BACKGROUND_LOCATION
dalam AndroidManifest
-nya. Dengan cara ini, aplikasi Anda tidak perlu mendeklarasikan izin itu sendiri, karena penggabungan Gradle akan menanganinya. Namun, jika notifikasi tidak ditampilkan kepada pengguna sebelum aplikasi masuk ke latar belakang, Navigation SDK akan mengandalkan sistem untuk memberikan update lokasi. Update sistem ini mungkin tidak sering atau akurat dan mengakibatkan pengalaman navigasi yang kurang optimal. Oleh karena itu, sebaiknya Anda juga meminta pengguna untuk memberikan akses lokasi latar belakang.
Yang dapat dilakukan developer aplikasi untuk meningkatkan akurasi lokasi untuk navigasi
Anda dapat meningkatkan akurasi sinyal lokasi yang digunakan oleh Navigation SDK dengan mengupdate aplikasi Anda untuk meminta pengguna memberikan akses lokasi di latar belakang. Untuk mengetahui informasi selengkapnya, lihat Meminta izin akses lokasi "Selalu izinkan".