Location Permission in mobiele ontwikkeling: wat is het, toegangsniveaus en werkingsprincipe

Auteur: IT Sectr Gepubliceerd: 2026-05-21 Leestijd: 8 min

Location Permission is de toestemming die een mobiele app aan de gebruiker vraagt om toegang te krijgen tot gegevens over zijn geografische locatie. Zonder deze toestemming kan de app de coördinaten van het apparaat niet bepalen en dus geen geolocatiefuncties bieden. Volgens Apple Developer Documentation, 2024 zijn alle apps die gebruikmaken van locatiediensten verplicht om expliciete toestemming van de gebruiker te vragen via een systeemdialoog.

Belangrijkste punten

  • Location Permission — verplichte toestemming voor toegang tot de geolocatie van het apparaat in mobiele apps.
  • Toegangsniveaus zijn verdeeld in achtergrond en tijdens gebruik van de app op beide platforms.
  • Android gebruikt ACCESS_FINE_LOCATION en ACCESS_COARSE_LOCATION voor nauwkeurige en bij benadering bepaling van coördinaten.
  • iOS vereist toevoeging van de sleutels NSLocationWhenInUseUsageDescription en NSLocationAlwaysUsageDescription in Info.plist.
  • Toestemmingsverzoek moet een duidelijke uitleg bevatten waarom de app locatiegegevens nodig heeft.

Wat is Location Permission?

Location Permission is een mechanisme van het besturingssysteem dat de toegang van apps tot gegevens over de geografische locatie van het apparaat regelt. Zonder expliciete toestemming van de gebruiker kan de app geen GPS-coördinaten, Wi-Fi-netwerkgegevens of informatie over mobiele zendmasten verkrijgen.

De mobiele platforms Android en iOS implementeren hun eigen machtigingssysteem, maar de algemene logica is hetzelfde: de app declareert de benodigde machtigingen in het manifest of configuratiebestand en vraagt ze vervolgens tijdens runtime aan. Volgens Android Developers, 2024 behoren vanaf Android 10 alle geolocatiemachtigingen tot de categorie gevaarlijk en vereisen ze een runtime-verzoek.

De reden voor deze aanpak is de bescherming van de privacy van gebruikers. Locatiegegevens maken het mogelijk om reisroutes te maken, werk- en rustplaatsen te bepalen en de identiteit te achterhalen. Daarom vereisen beide platforms transparante uitleg in het aanvraagdialoog: de app moet de reden aangeven waarom hij toegang tot geolocatie nodig heeft.

Waarom is geolocatietoestemming nodig

Geolocatietoestemming is noodzakelijk voor elke app waarvan de functionaliteit afhangt van kennis van de fysieke locatie van de gebruiker. Kaarten en navigatie, bezorgapps, weerdiensten, sociale netwerken met geotagging — al deze categorieën software vereisen Location Permission.

Zonder deze toestemming kan de app de coördinaten van het apparaat op geen enkele beschikbare manier bepalen: niet via de GPS-module, niet via Wi-Fi-scanning, niet via locatiebepaling op basis van mobiele zendmasten. De gebruiker kan op elk moment de toestemming intrekken in de systeeminstellingen, waarna de app de weigering correct moet afhandelen.

Volgens onderzoek van Pew Research Center (2024) trekt ongeveer 45% van de gebruikers de toegang tot geolocatie in bij apps die het niet gebruiken voor de kernfunctionaliteit. Dit betekent dat de ontwikkelaar het verzoek duidelijk moet motiveren en alternatieve mechanismen moet bieden voor degenen die Location Permission hebben geweigerd.

Wettelijke vereisten

AVG in Europa en wet 152-FZ in Rusland vereisen het verkrijgen van geïnformeerde toestemming voor de verwerking van locatiegegevens. De app moet niet alleen via de systeemdialoog om toestemming vragen, maar ook een aparte melding geven over de doeleinden van gegevensverzameling. Schending van deze vereisten leidt tot boetes tot 20 miljoen euro of 4% van de jaarlijkse omzet van het bedrijf.

Gevolgen van ontbrekende toestemming

Als de app geen Location Permission vraagt of de gebruiker weigert toegang, moet de ontwikkelaar een back-upscenario voorzien. Voor een kaartapp kan dit handmatige invoer van het adres zijn, voor een bezorgapp — selectie uit een lijst met opgeslagen adressen, voor een weerdienst — bepaling van de stad op basis van het IP-adres. Graceful degradation (sierlijke degradatie) is een standaardpraktijk aanbevolen door Google en Apple.

Toegangsniveaus tot geolocatie

Toegangsniveaus tot geolocatie verschillen op Android en iOS, hoewel het algemene idee hetzelfde is: hoe nauwkeuriger de toegang, hoe strengere eisen het platform aan de app stelt.

ToegangsniveauAndroidiOS
Tijdens gebruikAlleen wanneer de app actief isWhen In Use — alleen in de app
AchtergrondAlways — permanent, zelfs op de achtergrondAlways — vereist extra App Store-beoordeling
Bij benaderingACCESS_COARSE_LOCATION (nauwkeurigheid tot 500 m)Met optie Precision = Off (iOS 14+)

ACCESS_FINE_LOCATION en ACCESS_COARSE_LOCATION op Android

ACCESS_FINE_LOCATION geeft toegang tot nauwkeurige GPS-coördinaten met een foutmarge van enkele meters. Voor het declareren van deze machtiging in het manifest wordt de constante android.permission.ACCESS_FINE_LOCATION gebruikt. ACCESS_COARSE_LOCATION biedt op zijn beurt een benaderende locatie met een nauwkeurigheid tot 500 meter op basis van Wi-Fi en mobiele zendmasten.

When In Use en Always op iOS

When In Use (tijdens gebruik) stelt de app in staat coördinaten alleen te verkrijgen wanneer deze op het scherm geopend is. Always (altijd) geeft toegang tot geolocatie, zelfs in de achtergrondmodus, maar vereist een verplichte beoordeling in de App Store. Vanaf iOS 14 kan de gebruiker nauwkeurige positionering voor elke app afzonderlijk uitschakelen via de schakelaar Precision.

Location Permission aanvragen op Android

Location Permission aanvragen op Android gebeurt in twee fasen: declaratie van machtigingen in het manifest en runtime-verzoek in de code. Vanaf Android 6.0 (API 23) worden alle gevaarlijke machtigingen aangevraagd tijdens het gebruik van de app, niet bij installatie.

Declaratie in het manifest

De eerste stap is het toevoegen van de benodigde machtigingen aan het bestand AndroidManifest.xml. Voor nauwkeurige en benaderende positionering worden verschillende constanten gebruikt.

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

Runtime-verzoek in Kotlin

Na declaratie in het manifest moet de systeemdialoog voor het aanvragen van toestemming in de app-code worden aangeroepen. Laten we een voorbeeld in Kotlin bekijken met behulp van de Activity Result API.

kotlin
private val locationPermissionRequest =
    registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
    when {
        permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
            // Toestemming verkregen
            getLocation()
        }
        permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
            // Alleen bij benadering locatie
            getCoarseLocation()
        }
        else -> {
            // Gebruiker heeft geweigerd
            showLocationExplanation()
        }
    }
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    checkLocationPermission()
}

Afhandeling van weigering en herhaald verzoek

Als de gebruiker de toegang heeft geweigerd, staat het Android-systeem niet toe de dialoog automatisch opnieuw te tonen. De ontwikkelaar moet shouldShowRequestPermissionRationale aanroepen om een voorafgaande uitleg te tonen. Bij herhaalde weigering met de vlag Never Ask Again moet de gebruiker naar de systeeminstellingen worden verwezen.

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

Location Permission aanvragen op iOS

Location Permission aanvragen op iOS vereist toevoeging van speciale sleutels aan het Info.plist-bestand en het aanroepen van de methode van de klasse CLLocationManager. Apple besteedt bijzondere aandacht aan privacy, daarom moet de uitleg in het aanvraagdialoog zo specifiek mogelijk zijn.

Info.plist configuratie

Om locatie op iOS aan te vragen, moet u een of beide sleutels toevoegen aan Info.plist: NSLocationWhenInUseUsageDescription voor toegang tijdens gebruik en NSLocationAlwaysAndWhenInUseUsageDescription voor achtergrondtoegang. De waarde van elke sleutel is een tekenreeks die aan de gebruiker wordt getoond in de dialoog.

xml
<key>NSLocationWhenInUseUsageDescription</key>
<string>De app heeft uw locatie nodig om de dichtstbijzijnde punten op de kaart weer te geven.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>De app heeft toegang tot geolocatie op de achtergrond nodig om de route te volgen.</string>

Verzoek in Swift

In Swift-code wordt het verzoek uitgevoerd via een instantie van CLLocationManager. Afhankelijk van het benodigde toegangsniveau wordt requestWhenInUseAuthorization of requestAlwaysAuthorization aangeroepen.

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

Verschil tussen platforms

In tegenstelling tot Android biedt iOS de ontwikkelaar geen methode om shouldShowRequestPermissionRationale te controleren. Het systeem beslist zelf wanneer het de uitleg toont. Bovendien kan de gebruiker op iOS de machtiging alleen wijzigen via de systeeminstellingen — de app kan de systeemdialoog niet opnieuw aanroepen nadat de gebruiker een keuze heeft gemaakt. RequestAlwaysAuthorization vraagt eerst When In Use en vervolgens, na ontvangst van de eerste toestemming, een aparte dialoog voor achtergrondtoegang.

Beste praktijken voor werken met geolocatie

Beste praktijken voor werken met Location Permission helpen om weigeringen van gebruikers te verminderen en te voldoen aan de eisen van app-winkels. Google en Apple hebben aanbevelingen gepubliceerd waarvan naleving de kans op goedkeuring van de app vergroot.

Vraag toestemming in context

Toon de dialoog voor het aanvragen van Location Permission niet direct bij het starten van de app. Een gebruiker die de app net heeft geopend, begrijpt nog niet waarom hij toegang tot geolocatie moet verlenen. Contextual request houdt in dat de dialoog verschijnt op het moment dat de gebruiker echt de functie nodig heeft waarvoor toestemming vereist is. Bijvoorbeeld bij het klikken op de knop “Zoek de dichtstbijzijnde winkel”.

Leg de reden van tevoren uit

Toon vóór de systeemdialoog uw eigen uitlegscherm (pre-permission screen). Leg daarin uit waarom de app geolocatie nodig heeft, welke gegevens worden verzameld en hoe ze worden gebruikt. Nadat de gebruiker op “Toestaan” op uw scherm heeft geklikt, toont u de systeemdialoog. Volgens gegevens van Appsflyer (2024) verhoogt deze aanpak de conversie van toestemming met 25-35%.

Vraag Always niet onnodig

Achtergrondtoegang tot geolocatie is alleen nodig voor apps die op de achtergrond werken: navigators, activiteitstrackers, bezorgapps. Als uw app alleen coördinaten nodig heeft wanneer het scherm geopend is, vraag dan When In Use. De App Store wijst de app af als Always niet functioneel gerechtvaardigd is. Op Android wordt achtergrondtoegang aanvullend gereguleerd via de machtiging ACCESS_BACKGROUND_LOCATION.

Veelgestelde vragen

Wat gebeurt er als de gebruiker Location Permission weigert?

De app moet de weigering correct afhandelen en een alternatief scenario bieden. Bijvoorbeeld handmatige invoer van het adres of bepaling van de stad op basis van het IP-adres. De systeemdialoog wordt niet opnieuw getoond — de gebruiker moet naar de instellingen worden verwezen.

Kan Location Permission worden aangevraagd zonder uitleg?

Technisch gezien ja, de systeemdialoog kan zonder voorafgaand scherm worden aangeroepen. Echter, de conversie van toestemming zonder uitleg bedraagt 30-40%, terwijl deze met een voorafgaand scherm 60-75% is. Apple en Google raden aan altijd de reden van het verzoek uit te leggen.

Hoe controleer ik de status van Location Permission op Android?

Gebruik ContextCompat.checkSelfPermission met de constante Manifest.permission.ACCESS_FINE_LOCATION. De methode retourneert PERMISSION_GRANTED of PERMISSION_DENIED, waarmee de huidige status kan worden bepaald zonder de systeemdialoog aan te roepen.

Wat is het verschil tussen ACCESS_FINE_LOCATION en ACCESS_COARSE_LOCATION?

ACCESS_FINE_LOCATION geeft toegang tot nauwkeurige GPS-coördinaten met een foutmarge van 3-10 meter. ACCESS_COARSE_LOCATION biedt een benaderende locatie met een nauwkeurigheid tot 500 meter op basis van Wi-Fi en mobiele zendmasten. Op Android 12+ kan de ontwikkelaar beide machtigingen tegelijk aanvragen.

Is Location Permission nodig voor BLE-scanners?

Op Android is voor het scannen van BLE-apparaten ACCESS_FINE_LOCATION of ACCESS_COARSE_LOCATION vereist, omdat BLE-signalen kunnen worden gebruikt voor positietriangulatie. Op iOS is voor BLE alleen Bluetooth-toestemming voldoende, Location Permission is niet nodig.

Samenvatting

  • Location Permission — het belangrijkste privacybeschermingsmechanisme dat de toegang van apps tot de geolocatie van het apparaat regelt.
  • Toegangsniveaus omvatten tijdens gebruik (When In Use) en achtergrond (Always) op iOS, en nauwkeurig (ACCESS_FINE_LOCATION) en benaderend (ACCESS_COARSE_LOCATION) op Android.
  • Android vereist declaratie van machtigingen in het manifest en runtime-verzoek via de Activity Result API vanaf API 23.
  • iOS vereist toevoeging van sleutels in Info.plist en aanroepen van CLLocationManager-methoden met verplichte vermelding van de reden in de verzoektekst.
  • Contextual request — de beste praktijk waarbij de dialoog verschijnt op het moment van behoefte, niet bij het starten van de app.
  • Pre-permission screen verhoogt de conversie van toestemming met 25-35% volgens gegevens van Appsflyer (2024).
  • Weigering van de gebruiker vereist graceful degradation — een alternatief scenario zonder gebruik van geolocatie.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook