Location Permission adalah izin yang diminta aplikasi mobile dari pengguna untuk mengakses data tentang lokasi geografisnya. Tanpa izin ini, aplikasi tidak dapat menentukan koordinat perangkat, sehingga tidak dapat menyediakan fungsi geolokasi. Menurut Apple Developer Documentation, 2024, semua aplikasi yang menggunakan layanan lokasi wajib meminta persetujuan eksplisit pengguna melalui dialog sistem.
Poin Utama
Location Permission adalah mekanisme sistem operasi yang mengatur akses aplikasi ke data tentang lokasi geografis perangkat. Tanpa persetujuan eksplisit pengguna, aplikasi tidak dapat memperoleh koordinat GPS, data jaringan Wi-Fi, atau informasi tentang menara seluler.
Platform mobile Android dan iOS mengimplementasikan sistem izin mereka sendiri, tetapi logika umumnya sama: aplikasi mendeklarasikan izin yang diperlukan dalam manifes atau file konfigurasi, kemudian memintanya saat runtime. Menurut Android Developers, 2024, mulai Android 10 semua izin geolokasi termasuk dalam kategori berbahaya dan memerlukan permintaan runtime.
Alasan pendekatan ini adalah perlindungan privasi pengguna. Data lokasi memungkinkan pembuatan rute perjalanan, penentuan tempat kerja dan istirahat, serta identifikasi pribadi. Oleh karena itu, kedua platform memerlukan penjelasan transparan dalam dialog permintaan: aplikasi harus menyebutkan alasan mengapa ia memerlukan akses ke geolokasi.
Izin geolokasi diperlukan untuk aplikasi apa pun yang fungsionalitasnya bergantung pada pengetahuan tentang lokasi fisik pengguna. Peta dan navigasi, aplikasi pengiriman, layanan cuaca, jejaring sosial dengan geotagging — semua kategori program ini memerlukan Location Permission.
Tanpa izin ini, aplikasi tidak dapat menentukan koordinat perangkat dengan cara apa pun yang tersedia: baik melalui modul GPS, melalui pemindaian Wi-Fi, maupun melalui penentuan lokasi berdasarkan menara seluler. Pengguna dapat sewaktu-waktu mencabut izin di pengaturan sistem, setelah itu aplikasi harus menangani penolakan dengan benar.
Menurut penelitian Pew Research Center (2024), sekitar 45% pengguna mencabut akses ke geolokasi di aplikasi yang tidak menggunakannya untuk fungsi utama. Ini berarti pengembang harus menjelaskan permintaan dengan jelas dan menawarkan mekanisme alternatif bagi mereka yang menolak Location Permission.
GDPR di Eropa dan undang-undang 152-FZ di Rusia mengharuskan perolehan persetujuan yang diinformasikan untuk pemrosesan data lokasi. Aplikasi tidak hanya harus meminta izin melalui dialog sistem, tetapi juga memberikan pemberitahuan terpisah tentang tujuan pengumpulan data. Pelanggaran persyaratan ini mengakibatkan denda hingga 20 juta euro atau 4% dari omset tahunan perusahaan.
Jika aplikasi tidak meminta Location Permission atau pengguna menolak akses, pengembang harus menyediakan skenario cadangan. Untuk aplikasi peta, ini bisa berupa input alamat manual, untuk aplikasi pengiriman — pilihan dari daftar alamat yang disimpan, untuk layanan cuaca — penentuan kota berdasarkan alamat IP. Graceful degradation (degradasi yang halus) adalah praktik standar yang direkomendasikan oleh Google dan Apple.
Tingkat akses ke geolokasi berbeda di Android dan iOS, meskipun ide umumnya sama: semakin akurat aksesnya, semakin ketat persyaratan yang diberlakukan platform pada aplikasi.
| Tingkat akses | Android | iOS |
|---|---|---|
| Saat digunakan | Hanya saat aplikasi aktif | When In Use — hanya di aplikasi |
| Latar belakang | Always — terus-menerus, bahkan di latar belakang | Always — memerlukan tinjauan App Store tambahan |
| Perkiraan | ACCESS_COARSE_LOCATION (akurasi hingga 500 m) | Dengan opsi Precision = Off (iOS 14+) |
ACCESS_FINE_LOCATION memberikan akses ke koordinat GPS yang akurat dengan kesalahan hingga beberapa meter. Untuk mendeklarasikan izin ini di manifes, digunakan konstanta android.permission.ACCESS_FINE_LOCATION. ACCESS_COARSE_LOCATION menyediakan lokasi perkiraan dengan akurasi hingga 500 meter berdasarkan data Wi-Fi dan menara seluler.
When In Use (saat digunakan) memungkinkan aplikasi mendapatkan koordinat hanya saat terbuka di layar. Always (selalu) memberikan akses ke geolokasi bahkan dalam mode latar belakang, tetapi memerlukan tinjauan wajib di App Store. Mulai iOS 14, pengguna dapat mematikan positioning akurat untuk setiap aplikasi secara terpisah melalui sakelar Precision.
Meminta Location Permission di Android dilakukan dalam dua tahap: deklarasi izin di manifes dan permintaan runtime dalam kode. Mulai Android 6.0 (API 23), semua izin berbahaya diminta selama pengoperasian aplikasi, bukan saat instalasi.
Langkah pertama adalah menambahkan izin yang diperlukan ke file AndroidManifest.xml. Untuk positioning akurat dan perkiraan digunakan konstanta yang berbeda.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Setelah deklarasi di manifes, dialog sistem permintaan izin harus dipanggil dalam kode aplikasi. Mari kita lihat contoh di Kotlin menggunakan Activity Result API.
private val locationPermissionRequest =
registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
when {
permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
// Izin diperoleh
getLocation()
}
permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
// Hanya lokasi perkiraan
getCoarseLocation()
}
else -> {
// Pengguna menolak
showLocationExplanation()
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
checkLocationPermission()
}
Jika pengguna menolak akses, sistem Android tidak mengizinkan dialog ditampilkan ulang secara otomatis. Pengembang harus memanggil shouldShowRequestPermissionRationale untuk menampilkan penjelasan awal. Pada penolakan berulang dengan flag Never Ask Again, pengguna harus diarahkan ke pengaturan sistem.
private fun checkLocationPermission() {
when {
ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) ==
PackageManager.PERMISSION_GRANTED -> {
getLocation()
}
ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.ACCESS_FINE_LOCATION) -> {
showRationaleDialog {
requestLocationPermission()
}
}
else -> {
openAppSettings()
}
}
}
Meminta Location Permission di iOS memerlukan penambahan kunci khusus ke file Info.plist dan pemanggilan metode kelas CLLocationManager. Apple memberikan perhatian khusus pada privasi, oleh karena itu teks penjelasan dalam dialog permintaan harus sespesifik mungkin.
Untuk meminta lokasi di iOS, perlu menambahkan satu atau kedua kunci ke Info.plist: NSLocationWhenInUseUsageDescription untuk akses saat digunakan dan NSLocationAlwaysAndWhenInUseUsageDescription untuk akses latar belakang. Nilai setiap kunci adalah string yang akan ditampilkan kepada pengguna dalam dialog.
<key>NSLocationWhenInUseUsageDescription</key>
<string>Aplikasi memerlukan lokasi Anda untuk menampilkan titik terdekat di peta.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Aplikasi memerlukan akses ke geolokasi di latar belakang untuk melacak rute.</string>
Dalam kode Swift, permintaan dilakukan melalui instance CLLocationManager. Tergantung pada tingkat akses yang diperlukan, requestWhenInUseAuthorization atau requestAlwaysAuthorization dipanggil.
import CoreLocation
class LocationManager: NSObject, CLLocationManagerDelegate {
private let manager = CLLocationManager()
func requestLocationAccess() {
manager.delegate = self
manager.requestWhenInUseAuthorization()
}
func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) {
switch manager.authorizationStatus {
case .authorizedWhenInUse, .authorizedAlways:
startLocationUpdates()
case .denied, .restricted:
showSettingsAlert()
case .notDetermined:
break
}
}
}
Tidak seperti Android, iOS tidak menyediakan metode kepada pengembang untuk memeriksa shouldShowRequestPermissionRationale. Sistem memutuskan sendiri kapan akan menampilkan penjelasan. Selain itu, di iOS pengguna hanya dapat mengubah izin melalui pengaturan sistem — aplikasi tidak dapat memanggil ulang dialog sistem setelah pengguna membuat pilihan. RequestAlwaysAuthorization pertama meminta When In Use, kemudian setelah mendapatkan persetujuan pertama, dialog terpisah untuk akses latar belakang.
Praktik terbaik bekerja dengan Location Permission membantu mengurangi penolakan pengguna dan memenuhi persyaratan toko aplikasi. Google dan Apple telah menerbitkan rekomendasi yang kepatuhannya meningkatkan kemungkinan persetujuan aplikasi.
Jangan tampilkan dialog permintaan Location Permission segera saat aplikasi diluncurkan. Pengguna yang baru membuka aplikasi belum mengerti mengapa ia harus memberikan akses ke geolokasi. Contextual request berarti dialog muncul pada saat pengguna benar-benar membutuhkan fungsi yang memerlukan izin. Misalnya, saat menekan tombol “Temukan toko terdekat”.
Sebelum dialog sistem, tampilkan layar penjelasan Anda sendiri (pre-permission screen). Di dalamnya, jelaskan mengapa aplikasi memerlukan geolokasi, data apa yang dikumpulkan dan bagaimana akan digunakan. Setelah pengguna mengklik “Izinkan” di layar Anda, tampilkan dialog sistem. Menurut data Appsflyer (2024), pendekatan ini meningkatkan konversi persetujuan sebesar 25-35%.
Akses latar belakang ke geolokasi hanya diperlukan untuk aplikasi yang bekerja di latar belakang: navigator, pelacak aktivitas, aplikasi pengiriman. Jika aplikasi Anda hanya membutuhkan koordinat saat layar terbuka, minta When In Use. App Store akan menolak aplikasi jika Always tidak dibenarkan secara fungsional. Di Android, akses latar belakang diatur tambahan melalui izin ACCESS_BACKGROUND_LOCATION.
Pertanyaan yang Sering Diajukan
Aplikasi harus menangani penolakan dengan benar dan menawarkan skenario alternatif. Misalnya, input alamat manual atau penentuan kota berdasarkan alamat IP. Dialog sistem tidak ditampilkan ulang — pengguna harus diarahkan ke pengaturan.
Secara teknis ya, dialog sistem dapat dipanggil tanpa layar awal. Namun, konversi persetujuan tanpa penjelasan adalah 30-40%, sedangkan dengan layar awal adalah 60-75%. Apple dan Google merekomendasikan untuk selalu menjelaskan alasan permintaan.
Gunakan ContextCompat.checkSelfPermission dengan konstanta Manifest.permission.ACCESS_FINE_LOCATION. Metode mengembalikan PERMISSION_GRANTED atau PERMISSION_DENIED, yang memungkinkan penentuan status saat ini tanpa memanggil dialog sistem.
ACCESS_FINE_LOCATION memberikan akses ke koordinat GPS yang akurat dengan kesalahan 3-10 meter. ACCESS_COARSE_LOCATION menyediakan lokasi perkiraan dengan akurasi hingga 500 meter berdasarkan Wi-Fi dan menara seluler. Di Android 12+, pengembang dapat meminta kedua izin secara bersamaan.
Di Android, untuk memindai perangkat BLE diperlukan ACCESS_FINE_LOCATION atau ACCESS_COARSE_LOCATION, karena sinyal BLE dapat digunakan untuk triangulasi posisi. Di iOS untuk BLE, izin Bluetooth sudah cukup, Location Permission tidak diperlukan.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga