Praktik terbaik penggunaan lokasi latar belakang

Halaman ini menjelaskan praktik terbaik untuk meminta dan mengelola izin penggunaan lokasi latar belakang.

Meminta izin 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 saja tidak cukup untuk mengakses lokasi di latar belakang dan sebaiknya Anda meminta izin lokasi "Selalu izinkan" dari pengguna. Hal ini memastikan aplikasi dapat berjalan di latar belakang dan menampilkan notifikasi, yang memaksimalkan akurasi lokasi selama navigasi.

Perintah ini harus menjelaskan kepada pengguna bagaimana pemberian izin akan meningkatkan akurasi lokasi dan meningkatkan pengalaman navigasi mereka saat aplikasi berjalan di latar belakang.

dialog izin contoh

Untuk mengetahui informasi selengkapnya tentang meminta akses lokasi kepada pengguna, lihat Meminta izin lokasi | Sensor dan lokasi | Android Developers dalam dokumentasi developer Android.

Memastikan pembersihan notifikasi navigasi yang tepat

Untuk memastikan aplikasi Anda tidak mempertahankan notifikasi setelah tidak lagi diperlukan, pastikan Anda melakukan langkah-langkah pembersihan berikut:

  • Setelah memanggil startGuidance(), pastikan untuk memanggil stopGuidance() atau clearDestination().
  • Setelah mendaftarkan ArrivalListener, pastikan untuk membatalkan pendaftarannya.
  • Setelah mendaftarkan RoadSnappedLocationProvider, pastikan untuk membatalkan pendaftarannya.

Dengan menyelesaikan langkah-langkah ini, notifikasi tidak akan dipertahankan saat tidak lagi diperlukan, yang dapat menyebabkan baterai terkuras 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 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 mengurangi perubahan ini, Navigation SDK diupdate dalam versi 5.4.0 untuk mengelola akses lokasi latar belakang dengan lebih baik. Sebaiknya update juga implementasi Anda untuk memastikan aplikasi Anda terus memiliki akses ke data lokasi yang paling akurat.

Dampak 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 akurat pengguna di latar belakang memerlukan izin dari pengguna. Secara default, jika aplikasi tidak memiliki izin pengguna untuk akses lokasi latar belakang dan mencoba memulai layanan latar depan untuk update lokasi, sistem akan menampilkan SecurityException, yang menyebabkan aplikasi mengalami error.

Cara Navigation SDK mengurangi masalah ini

Mulai 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 di AndroidManifest. 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 menghasilkan pengalaman navigasi yang kurang optimal. Oleh karena itu, sebaiknya Anda juga meminta akses lokasi latar belakang kepada pengguna.

Hal 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 untuk meminta akses lokasi latar belakang kepada pengguna. Untuk mengetahui informasi selengkapnya, lihat Meminta izin lokasi "Selalu izinkan".