Location Permission dalam pengembangan mobile: apa itu, tingkat akses dan prinsip kerja

Penulis: IT Sectr Diterbitkan: 2026-05-21 Waktu membaca: 8 mnt

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 — izin wajib untuk mengakses geolokasi perangkat dalam aplikasi mobile.
  • Tingkat akses dibagi menjadi latar belakang dan saat menggunakan aplikasi di kedua platform.
  • Android menggunakan ACCESS_FINE_LOCATION dan ACCESS_COARSE_LOCATION untuk penentuan koordinat yang akurat dan perkiraan.
  • iOS memerlukan penambahan kunci NSLocationWhenInUseUsageDescription dan NSLocationAlwaysUsageDescription di Info.plist.
  • Permintaan izin harus berisi penjelasan yang jelas mengapa aplikasi membutuhkan data lokasi.

Apa itu Location Permission?

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.

Mengapa izin geolokasi diperlukan

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.

Persyaratan hukum

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.

Konsekuensi tidak adanya izin

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

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 aksesAndroidiOS
Saat digunakanHanya saat aplikasi aktifWhen In Use — hanya di aplikasi
Latar belakangAlways — terus-menerus, bahkan di latar belakangAlways — memerlukan tinjauan App Store tambahan
PerkiraanACCESS_COARSE_LOCATION (akurasi hingga 500 m)Dengan opsi Precision = Off (iOS 14+)

ACCESS_FINE_LOCATION dan ACCESS_COARSE_LOCATION di Android

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 dan Always di iOS

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

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.

Deklarasi di manifes

Langkah pertama adalah menambahkan izin yang diperlukan ke file AndroidManifest.xml. Untuk positioning akurat dan perkiraan digunakan konstanta yang berbeda.

xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Permintaan runtime di Kotlin

Setelah deklarasi di manifes, dialog sistem permintaan izin harus dipanggil dalam kode aplikasi. Mari kita lihat contoh di Kotlin menggunakan Activity Result API.

kotlin
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()
}

Penanganan penolakan dan permintaan ulang

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.

kotlin
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

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.

Konfigurasi Info.plist

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.

xml
<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>

Permintaan di Swift

Dalam kode Swift, permintaan dilakukan melalui instance CLLocationManager. Tergantung pada tingkat akses yang diperlukan, requestWhenInUseAuthorization atau requestAlwaysAuthorization dipanggil.

swift
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
        }
    }
}

Perbedaan antar platform

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 geolokasi

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.

Minta izin dalam konteks

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”.

Jelaskan alasan sebelumnya

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%.

Jangan meminta Always tanpa kebutuhan

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

Apa yang terjadi jika pengguna menolak Location Permission?

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.

Bisakah Location Permission diminta tanpa penjelasan?

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.

Bagaimana cara memeriksa status Location Permission di Android?

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.

Apa perbedaan antara ACCESS_FINE_LOCATION dan ACCESS_COARSE_LOCATION?

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.

Apakah Location Permission diperlukan untuk pemindai BLE?

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

  • Location Permission — mekanisme perlindungan privasi utama yang mengatur akses aplikasi ke geolokasi perangkat.
  • Tingkat akses mencakup saat digunakan (When In Use) dan latar belakang (Always) di iOS, serta akurat (ACCESS_FINE_LOCATION) dan perkiraan (ACCESS_COARSE_LOCATION) di Android.
  • Android memerlukan deklarasi izin di manifes dan permintaan runtime melalui Activity Result API mulai API 23.
  • iOS memerlukan penambahan kunci di Info.plist dan pemanggilan metode CLLocationManager dengan pencantuman wajib alasan dalam teks permintaan.
  • Contextual request — praktik terbaik di mana dialog muncul pada saat dibutuhkan, bukan saat aplikasi diluncurkan.
  • Pre-permission screen meningkatkan konversi persetujuan sebesar 25-35% menurut data Appsflyer (2024).
  • Penolakan pengguna memerlukan graceful degradation — skenario alternatif tanpa menggunakan geolokasi.

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.

Diskusikan proyek

Baca juga