Location Permission i mobilutveckling: vad det är, åtkomstnivåer och funktionsprincip

Författare: IT Sectr Publicerad: 2026-05-21 Lästid: 8 min

Location Permission är det tillstånd som en mobilapplikation begär från användaren för att få åtkomst till data om hans eller hennes geografiska position. Utan detta tillstånd kan applikationen inte bestämma enhetens koordinater och kan därför inte tillhandahålla geolokaliseringstjänster. Enligt Apple Developer Documentation, 2024 är alla applikationer som använder platstjänster skyldiga att begära användarens uttryckliga samtycke via en systemdialog.

Huvudpunkter

  • Location Permission — obligatoriskt tillstånd för åtkomst till enhetens geolokalisering i mobila applikationer.
  • Åtkomstnivåer delas upp i bakgrundsåtkomst och vid användning av applikationen på båda plattformarna.
  • Android använder ACCESS_FINE_LOCATION och ACCESS_COARSE_LOCATION för exakt och ungefärlig bestämning av koordinater.
  • iOS kräver att nycklarna NSLocationWhenInUseUsageDescription och NSLocationAlwaysUsageDescription läggs till i Info.plist.
  • Begäran om tillstånd bör innehålla en begriplig förklaring av varför applikationen behöver platsdata.

Vad är Location Permission?

Location Permission är en mekanism i operativsystemet som reglerar applikationers åtkomst till data om enhetens geografiska position. Utan användarens uttryckliga samtycke kan applikationen inte få GPS-koordinater, Wi-Fi-nätverksdata eller information om mobila basstationer.

Mobilplattformarna Android och iOS implementerar sina egna tillståndssystem, men den allmänna logiken är densamma: applikationen deklarerar nödvändiga tillstånd i manifestet eller konfigurationsfilen och begär dem sedan under körning. Enligt Android Developers, 2024 tillhör från och med Android 10 alla geolokaliseringsbehörigheter kategorin farliga och kräver begäran under körning.

Anledningen till detta tillvägagångssätt är skyddet av användarnas integritet. Platsdata gör det möjligt att skapa resvägar, bestämma arbets- och viloplatser samt identifiera personer. Därför kräver båda plattformarna transparent förklaring i begärandialogen: applikationen måste ange varför den behöver åtkomst till geolokalisering.

Varför behövs geolokaliseringstillstånd

Geolokaliseringstillstånd är nödvändigt för alla applikationer vars funktionalitet beror på kunskap om användarens fysiska position. Kartor och navigering, leveransapplikationer, väderappar, sociala nätverk med geotaggning — alla dessa programkategorier kräver Location Permission.

Utan detta tillstånd kan applikationen inte bestämma enhetens koordinater på något tillgängligt sätt: varken via GPS-modulen, via Wi-Fi-skanning eller via positionsbestämning baserat på mobila basstationer. Användaren kan när som helst återkalla tillståndet i systeminställningarna, varefter applikationen måste hantera avslaget korrekt.

Enligt forskning från Pew Research Center (2024) återkallar cirka 45% av användarna åtkomst till geolokalisering i applikationer som inte använder den för grundläggande funktionalitet. Detta innebär att utvecklaren måste motivera begäran tydligt och erbjuda alternativa mekanismer för dem som har avböjt Location Permission.

Juridiska krav

GDPR i Europa och lag 152-FZ i Ryssland kräver att informerat samtycke inhämtas för behandling av platsdata. Applikationen måste inte bara begära tillstånd via systemdialogen utan också tillhandahålla ett separat meddelande om syftena med datainsamlingen. Brott mot dessa krav medför böter på upp till 20 miljoner euro eller 4% av företagets årliga omsättning.

Konsekvenser av uteblivet tillstånd

Om applikationen inte begär Location Permission eller användaren nekar åtkomst måste utvecklaren tillhandahålla ett reservscenario. För en kartapplikation kan detta vara manuell inmatning av adress, för en leveransapplikation — val från en lista över sparade adresser, för en väderapplikation — bestämning av stad baserat på IP-adress. Graceful degradation (elegant försämring) är en standardpraxis som rekommenderas av Google och Apple.

Åtkomstnivåer till geolokalisering

Åtkomstnivåer till geolokalisering skiljer sig på Android och iOS, även om den allmänna idén är densamma: ju mer exakt åtkomst, desto strängare krav ställer plattformen på applikationen.

ÅtkomstnivåAndroidiOS
Vid användningEndast när applikationen är aktivWhen In Use — endast i applikationen
BakgrundAlways — kontinuerligt, även i bakgrundenAlways — kräver ytterligare App Store-granskning
UngefärligACCESS_COARSE_LOCATION (noggrannhet upp till 500 m)Med alternativet Precision = Off (iOS 14+)

ACCESS_FINE_LOCATION och ACCESS_COARSE_LOCATION på Android

ACCESS_FINE_LOCATION ger åtkomst till exakta GPS-koordinater med en felmarginal på några meter. För att deklarera detta tillstånd i manifestet används konstanten android.permission.ACCESS_FINE_LOCATION. ACCESS_COARSE_LOCATION tillhandahåller i sin tur en ungefärlig position med en noggrannhet på upp till 500 meter baserat på Wi-Fi och mobila basstationer.

When In Use och Always på iOS

When In Use (vid användning) tillåter applikationen att hämta koordinater endast när den är öppen på skärmen. Always (alltid) ger åtkomst till geolokalisering även i bakgrundsläge, men kräver obligatorisk granskning i App Store. Från och med iOS 14 kan användaren separat stänga av exakt positionering för varje applikation via omkopplaren Precision.

Begära Location Permission på Android

Begära Location Permission på Android utförs i två steg: deklaration av tillstånd i manifestet och begäran under körning i koden. Från och med Android 6.0 (API 23) begärs alla farliga tillstånd under applikationens drift, inte vid installation.

Deklaration i manifestet

Det första steget är att lägga till nödvändiga tillstånd i filen AndroidManifest.xml. För exakt och ungefärlig positionering används olika konstanter.

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

Begäran under körning i Kotlin

Efter deklaration i manifestet måste systemdialogrutan för tillståndsbegäran anropas i applikationskoden. Låt oss titta på ett exempel i Kotlin med Activity Result API.

kotlin
private val locationPermissionRequest =
    registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
    when {
        permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
            // Tillstånd beviljat
            getLocation()
        }
        permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
            // Endast ungefärlig plats
            getCoarseLocation()
        }
        else -> {
            // Användaren nekade
            showLocationExplanation()
        }
    }
}

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

Hantering av avslag och förnyad begäran

Om användaren har nekat åtkomst tillåter inte Android-systemet att dialogrutan visas automatiskt igen. Utvecklaren måste anropa shouldShowRequestPermissionRationale för att visa en preliminär förklaring. Vid förnyat avslag med flaggan Never Ask Again ska användaren omdirigeras till systeminställningarna.

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

Begära Location Permission på iOS

Begära Location Permission på iOS kräver att särskilda nycklar läggs till i filen Info.plist och att metoden i klassen CLLocationManager anropas. Apple lägger särskild vikt vid integritet, därför måste förklaringstexten i begärandialogen vara så specifik som möjligt.

Info.plist-konfiguration

För att begära plats på iOS måste en eller båda nycklarna läggas till i Info.plist: NSLocationWhenInUseUsageDescription för åtkomst vid användning och NSLocationAlwaysAndWhenInUseUsageDescription för bakgrundsåtkomst. Värdet för varje nyckel är en sträng som visas för användaren i dialogrutan.

xml
<key>NSLocationWhenInUseUsageDescription</key>
<string>Applikationen behöver din plats för att visa närmaste punkter på kartan.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Applikationen behöver åtkomst till geolokalisering i bakgrunden för att följa rutten.</string>

Begäran i Swift

I Swift-kod utförs begäran via en instans av CLLocationManager. Beroende på önskad åtkomstnivå anropas requestWhenInUseAuthorization eller requestAlwaysAuthorization.

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

Skillnad mellan plattformar

Till skillnad från Android tillhandahåller iOS inte utvecklaren någon metod för att kontrollera shouldShowRequestPermissionRationale. Systemet bestämmer själv när det ska visa förklaringen. Dessutom kan användaren på iOS endast ändra tillståndet via systeminställningarna — applikationen kan inte anropa systemdialogrutan igen efter att användaren har gjort ett val. RequestAlwaysAuthorization begär först When In Use och därefter, efter att första samtycket erhållits, en separat dialogruta för bakgrundsåtkomst.

Bästa praxis för arbete med geolokalisering

Bästa praxis för arbete med Location Permission hjälper till att minska användarnas avslag och uppfylla kraven från appbutiker. Google och Apple har publicerat rekommendationer vars efterlevnad ökar sannolikheten för godkännande av applikationen.

Begär tillstånd i sitt sammanhang

Visa inte dialogrutan för begäran om Location Permission omedelbart vid applikationens start. En användare som precis har öppnat applikationen förstår ännu inte varför han eller hon ska ge åtkomst till geolokalisering. Contextual request innebär att dialogrutan visas i det ögonblick då användaren verkligen behöver funktionen som kräver tillståndet. Till exempel när man trycker på knappen “Hitta närmaste butik”.

Förklara orsaken i förväg

Före systemdialogen, visa din egen förklaringsskärm (pre-permission screen). På den berätta varför applikationen behöver geolokalisering, vilka data som samlas in och hur de kommer att användas. När användaren klickar på “Tillåt” på din skärm, visa systemdialogen. Enligt uppgifter från Appsflyer (2024) ökar detta tillvägagångssätt konverteringen av samtycke med 25-35%.

Begär inte Always i onödan

Bakgrundsåtkomst till geolokalisering behövs endast för applikationer som arbetar i bakgrunden: navigatorer, aktivitetsspårare, leveransapplikationer. Om din applikation endast behöver koordinater när skärmen är öppen, begär When In Use. App Store kommer att avvisa applikationen om Always inte är funktionellt motiverat. På Android regleras bakgrundsåtkomst ytterligare genom tillståndet ACCESS_BACKGROUND_LOCATION.

Vanliga frågor

Vad händer om användaren nekar Location Permission?

Applikationen måste hantera avslaget korrekt och erbjuda ett alternativt scenario. Till exempel manuell inmatning av adress eller bestämning av stad baserat på IP-adress. Systemdialogen visas inte igen — användaren måste omdirigeras till inställningarna.

Kan Location Permission begäras utan förklaring?

Tekniskt sett ja, systemdialogen kan anropas utan föregående skärm. Dock är konverteringen av samtycke utan förklaring 30-40%, medan den med föregående skärm är 60-75%. Apple och Google rekommenderar att alltid förklara orsaken till begäran.

Hur kontrollerar jag status för Location Permission på Android?

Använd ContextCompat.checkSelfPermission med konstanten Manifest.permission.ACCESS_FINE_LOCATION. Metoden returnerar PERMISSION_GRANTED eller PERMISSION_DENIED, vilket gör det möjligt att bestämma aktuell status utan att anropa systemdialogen.

Vad är skillnaden mellan ACCESS_FINE_LOCATION och ACCESS_COARSE_LOCATION?

ACCESS_FINE_LOCATION ger åtkomst till exakta GPS-koordinater med en felmarginal på 3-10 meter. ACCESS_COARSE_LOCATION tillhandahåller en ungefärlig position med en noggrannhet på upp till 500 meter baserat på Wi-Fi och mobila basstationer. På Android 12+ kan utvecklaren begära båda tillstånden samtidigt.

Krävs Location Permission för BLE-skannrar?

På Android krävs ACCESS_FINE_LOCATION eller ACCESS_COARSE_LOCATION för att skanna BLE-enheter, eftersom BLE-signaler kan användas för positionstriangulering. På iOS räcker Bluetooth-tillstånd för BLE, Location Permission krävs inte.

Sammanfattning

  • Location Permission — den viktigaste integritetsskyddsmekanismen som reglerar applikationers åtkomst till enhetens geolokalisering.
  • Åtkomstnivåer omfattar vid användning (When In Use) och bakgrund (Always) på iOS, samt exakt (ACCESS_FINE_LOCATION) och ungefärlig (ACCESS_COARSE_LOCATION) på Android.
  • Android kräver deklaration av tillstånd i manifestet och begäran under körning via Activity Result API från API 23.
  • iOS kräver tillägg av nycklar i Info.plist och anrop av CLLocationManager-metoder med obligatorisk angivelse av orsak i begärandetexten.
  • Contextual request — bästa praxis där dialogrutan visas i behovsögonblicket, inte vid applikationens start.
  • Pre-permission screen ökar konverteringen av samtycke med 25-35% enligt uppgifter från Appsflyer (2024).
  • Användarens avslag kräver graceful degradation — ett alternativt scenario utan användning av geolokalisering.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också