Location Permission a mobilfejlesztésben: mi ez, hozzáférési szintek és működési elv

Szerző: IT Sectr Megjelenés: 2026-05-21 Olvasási idő: 8 perc

Location Permission az az engedély, amelyet a mobilalkalmazás a felhasználótól kér a földrajzi helyzetére vonatkozó adatok eléréséhez. Ezen engedély nélkül az alkalmazás nem tudja meghatározni az eszköz koordinátáit, így nem tud geolokációs funkciókat biztosítani. A Apple Developer Documentation, 2024 szerint minden, helymeghatározási szolgáltatásokat használó alkalmazás köteles kifejezett felhasználói hozzájárulást kérni egy rendszerpárbeszédablakon keresztül.

Főbb pontok

  • Location Permission — kötelező engedély az eszköz geolokációjának eléréséhez mobilalkalmazásokban.
  • Hozzáférési szintek háttér- és alkalmazáshasználat közbeni csoportra oszlanak mindkét platformon.
  • Android az ACCESS_FINE_LOCATION és ACCESS_COARSE_LOCATION használja a koordináták pontos és hozzávetőleges meghatározásához.
  • iOS megköveteli az NSLocationWhenInUseUsageDescription és NSLocationAlwaysUsageDescription kulcsok hozzáadását az Info.plist fájlhoz.
  • Engedélykérés tartalmaznia kell egy érthető magyarázatot arról, hogy az alkalmazásnak miért van szüksége a helyadatokra.

Mi az a Location Permission?

Location Permission az operációs rendszer egy olyan mechanizmusa, amely szabályozza az alkalmazások hozzáférését az eszköz földrajzi helyzetére vonatkozó adatokhoz. A felhasználó kifejezett hozzájárulása nélkül az alkalmazás nem szerezheti meg a GPS-koordinátákat, a Wi-Fi hálózatok adatait vagy a mobil bázisállomásokkal kapcsolatos információkat.

Az Android és iOS mobilplatformok saját engedélyrendszert implementálnak, de az általános logika ugyanaz: az alkalmazás deklarálja a szükséges engedélyeket a manifestben vagy konfigurációs fájlban, majd futásidőben kéri azokat. A Android Developers, 2024 szerint az Android 10-től kezdve az összes geolokációs engedély a veszélyes kategóriába tartozik, és futásidőbeni kérést igényel.

Ennek a megközelítésnek az oka a felhasználók magánéletének védelme. A helyadatok lehetővé teszik a mozgási útvonalak felépítését, a munka- és pihenőhelyek meghatározását, valamint a személyazonosítást. Ezért mindkét platform átlátható magyarázatot követel meg a kérési párbeszédablakban: az alkalmazásnak meg kell jelölnie az okot, amiért hozzáférésre van szüksége a geolokációhoz.

Miért van szükség geolokációs engedélyre

Geolokációs engedélyre szükség van minden olyan alkalmazásnál, amelynek funkcionalitása függ a felhasználó fizikai helyzetének ismeretétől. Térképek és navigáció, szállítási alkalmazások, időjárás-szolgáltatások, geocímkézést használó közösségi hálózatok — a szoftverek ezen kategóriái mind Location Permission-t igényelnek.

Ezen engedély nélkül az alkalmazás a rendelkezésre álló módszerek egyikével sem tudja meghatározni az eszköz koordinátáit: sem GPS-modulon keresztül, sem Wi-Fi szkenneléssel, sem mobil bázisállomások alapján történő helymeghatározással. A felhasználó bármikor visszavonhatja az engedélyt a rendszerbeállításokban, ezután az alkalmazásnak megfelelően kell kezelnie az elutasítást.

A Pew Research Center (2024) kutatása szerint a felhasználók körülbelül 45%-a visszavonja a geolokációhoz való hozzáférést azokban az alkalmazásokban, amelyek nem használják azt az alapvető funkciókhoz. Ez azt jelenti, hogy a fejlesztőnek egyértelműen meg kell indokolnia a kérést, és alternatív mechanizmusokat kell felajánlania azok számára, akik megtagadták a Location Permission-t.

Jogi követelmények

Az európai GDPR és az orosz 152-FZ törvény tájékozott hozzájárulás megszerzését írja elő a helyadatok feldolgozásához. Az alkalmazásnak nemcsak a rendszerpárbeszédablakon keresztül kell engedélyt kérnie, hanem külön értesítést is kell adnia az adatgyűjtés céljairól. E követelmények megsértése akár 20 millió eurós vagy a vállalat éves forgalmának 4%-át kitevő bírságot von maga után.

Az engedély hiányának következményei

Ha az alkalmazás nem kér Location Permission-t, vagy a felhasználó megtagadja a hozzáférést, a fejlesztőnek tartalék forgatókönyvet kell biztosítania. Térképes alkalmazás esetén ez lehet a cím kézi megadása, szállítási alkalmazás esetén a mentett címek listájából történő választás, időjárás-szolgáltatás esetén a város meghatározása IP-cím alapján. Graceful degradation (zökkenőmentes degradáció) a Google és az Apple által ajánlott szokásos gyakorlat.

Geolokáció hozzáférési szintjei

Geolokáció hozzáférési szintjei eltérnek Androidon és iOS-en, bár az általános elképzelés ugyanaz: minél pontosabb a hozzáférés, annál szigorúbb követelményeket támaszt a platform az alkalmazással szemben.

Hozzáférési szintAndroidiOS
Használat közbenCsak amikor az alkalmazás aktívWhen In Use — csak az alkalmazásban
HáttérbenAlways — folyamatosan, még a háttérben isAlways — további App Store-ellenőrzést igényel
HozzávetőlegesACCESS_COARSE_LOCATION (500 m-es pontosság)Precision = Off opcióval (iOS 14+)

ACCESS_FINE_LOCATION és ACCESS_COARSE_LOCATION Androidon

ACCESS_FINE_LOCATION hozzáférést biztosít a pontos GPS-koordinátákhoz néhány méteres hibahatárral. Az engedély manifestben történő deklarálásához az android.permission.ACCESS_FINE_LOCATION konstans használható. ACCESS_COARSE_LOCATION pedig hozzávetőleges helymeghatározást biztosít 500 méteres pontossággal Wi-Fi és mobil bázisállomások adatai alapján.

When In Use és Always iOS-en

When In Use (használat közben) lehetővé teszi az alkalmazás számára, hogy koordinátákat csak akkor szerezzen be, amikor az a képernyőn van megnyitva. Always (mindig) hozzáférést biztosít a geolokációhoz még háttérmódban is, de kötelező App Store-felülvizsgálatot igényel. Az iOS 14-től kezdve a felhasználó a Precision kapcsolóval külön-külön kikapcsolhatja a pontos pozicionálást minden alkalmazásnál.

Location Permission kérése Androidon

Location Permission kérése Androidon két szakaszban történik: az engedélyek deklarálása a manifestben és futásidőbeni kérés a kódban. Az Android 6.0-tól (API 23) kezdve az összes veszélyes engedélyt az alkalmazás futása során kérik, nem a telepítéskor.

Deklarálás a manifestben

Az első lépés a szükséges engedélyek hozzáadása az AndroidManifest.xml fájlhoz. A pontos és hozzávetőleges pozicionáláshoz különböző konstansok használatosak.

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

Futásidőbeni kérés Kotlinban

A manifestben történő deklarálás után meg kell hívni az engedélykérés rendszerpárbeszédablakát az alkalmazás kódjában. Nézzünk egy példát Kotlinban az Activity Result API használatával.

kotlin
private val locationPermissionRequest =
    registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
    when {
        permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
            // Engedély megadva
            getLocation()
        }
        permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
            // Csak hozzávetőleges helymeghatározás
            getCoarseLocation()
        }
        else -> {
            // A felhasználó megtagadta
            showLocationExplanation()
        }
    }
}

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

Elutasítás kezelése és ismételt kérés

Ha a felhasználó megtagadta a hozzáférést, az Android rendszer nem engedi a párbeszédablak automatikus újbóli megjelenítését. A fejlesztőnek a shouldShowRequestPermissionRationale függvényt kell meghívnia az előzetes magyarázat megjelenítéséhez. Ismételt elutasítás esetén a Never Ask Again jelzővel a felhasználót a rendszerbeállításokhoz kell irányítani.

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 kérése iOS-en

Location Permission kérése iOS-en speciális kulcsok hozzáadását igényli az Info.plist fájlhoz és a CLLocationManager osztály metódusának meghívását. Az Apple kiemelt figyelmet fordít a magánéletre, ezért a kérési párbeszédablakban szereplő magyarázó szövegnek a lehető legkonkrétabbnak kell lennie.

Info.plist konfiguráció

Helymeghatározás kéréséhez iOS-en egy vagy mindkét kulcsot hozzá kell adni az Info.plist fájlhoz: NSLocationWhenInUseUsageDescription a használat közbeni hozzáféréshez és NSLocationAlwaysAndWhenInUseUsageDescription a háttérhozzáféréshez. Az egyes kulcsok értéke egy karaktersorozat, amely a párbeszédablakban jelenik meg a felhasználónak.

xml
<key>NSLocationWhenInUseUsageDescription</key>
<string>Az alkalmazásnak szüksége van az Ön helyzetére a legközelebbi pontok térképen való megjelenítéséhez.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Az alkalmazásnak szüksége van geolokációs hozzáférésre a háttérben az útvonal követéséhez.</string>

Kérés Swiftben

Swift kódban a kérés egy CLLocationManager példányon keresztül történik. A szükséges hozzáférési szinttől függően a requestWhenInUseAuthorization vagy a requestAlwaysAuthorization metódus hívódik meg.

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

Különbség a platformok között

Az Androiddal ellentétben az iOS nem biztosít a fejlesztő számára metódust a shouldShowRequestPermissionRationale ellenőrzéséhez. A rendszer maga dönti el, hogy mikor jeleníti meg a magyarázatot. Továbbá iOS-en a felhasználó csak a rendszerbeállításokon keresztül változtathatja meg az engedélyt — az alkalmazás nem hívhatja meg újra a rendszerpárbeszédablakot, miután a felhasználó választott. A RequestAlwaysAuthorization először When In Use-t kér, majd az első hozzájárulás megszerzése után egy külön párbeszédablakot a háttérhozzáféréshez.

Legjobb gyakorlatok a geolokációval való munkához

Legjobb gyakorlatok a Location Permission használatához segítenek csökkenteni a felhasználói elutasításokat és megfelelni az alkalmazásboltok követelményeinek. A Google és az Apple közzétett ajánlásokat, amelyek betartása növeli az alkalmazás jóváhagyásának valószínűségét.

Kérjen engedélyt kontextusban

Ne jelenítse meg a Location Permission kérési párbeszédablakot közvetlenül az alkalmazás indításakor. Az a felhasználó, aki éppen megnyitotta az alkalmazást, még nem érti, miért kell hozzáférést biztosítania a geolokációhoz. Contextual request azt jelenti, hogy a párbeszédablak akkor jelenik meg, amikor a felhasználónak valóban szüksége van az engedélyt igénylő funkcióra. Például a “Legközelebbi bolt keresése” gomb megnyomásakor.

Magyarázza el az okot előre

A rendszerpárbeszédablak előtt jelenítse meg saját magyarázó képernyőjét (pre-permission screen). Ezen mondja el, miért van szüksége az alkalmazásnak geolokációra, milyen adatokat gyűjt és azokat hogyan használja fel. Miután a felhasználó rákattint az “Engedélyezés” gombra az Ön képernyőjén, jelenítse meg a rendszerpárbeszédablakot. A Appsflyer (2024) adatai szerint ez a megközelítés 25-35%-kal növeli a hozzájárulás konverzióját.

Ne kérjen Always-t szükségtelenül

A geolokáció háttérhozzáférése csak a háttérben működő alkalmazások számára szükséges: navigátorok, aktivitáskövetők, szállítási alkalmazások. Ha az Ön alkalmazásának csak akkor van szüksége koordinátákra, amikor a képernyő nyitva van, kérjen When In Use-t. Az App Store elutasítja az alkalmazást, ha az Always funkcionálisan nem indokolt. Androidon a háttérhozzáférést emellett az ACCESS_BACKGROUND_LOCATION engedély szabályozza.

Gyakran Ismételt Kérdések

Mi történik, ha a felhasználó megtagadja a Location Permission-t?

Az alkalmazásnak megfelelően kell kezelnie az elutasítást és alternatív forgatókönyvet kell felajánlania. Például a cím kézi megadását vagy a város meghatározását IP-cím alapján. A rendszerpárbeszédablak nem jelenik meg újra — a felhasználót a beállításokhoz kell irányítani.

Kérhető-e Location Permission magyarázat nélkül?

Technikailag igen, a rendszerpárbeszédablak előzetes képernyő nélkül is meghívható. Azonban a hozzájárulás konverziója magyarázat nélkül 30-40%, míg előzetes képernyővel 60-75%. Az Apple és a Google azt javasolja, hogy mindig magyarázzák el a kérés okát.

Hogyan ellenőrizhető a Location Permission állapota Androidon?

Használja a ContextCompat.checkSelfPermission metódust a Manifest.permission.ACCESS_FINE_LOCATION konstanssal. A metódus PERMISSION_GRANTED vagy PERMISSION_DENIED értéket ad vissza, ami lehetővé teszi az aktuális állapot meghatározását a rendszerpárbeszédablak meghívása nélkül.

Mi a különbség az ACCESS_FINE_LOCATION és az ACCESS_COARSE_LOCATION között?

ACCESS_FINE_LOCATION hozzáférést biztosít a pontos GPS-koordinátákhoz 3-10 méteres hibahatárral. ACCESS_COARSE_LOCATION hozzávetőleges helymeghatározást biztosít 500 méteres pontossággal Wi-Fi és mobil bázisállomások alapján. Android 12+ rendszeren a fejlesztő mindkét engedélyt egyszerre kérheti.

Szükséges-e Location Permission a BLE szkennerekhez?

Androidon a BLE-eszközök szkenneléséhez ACCESS_FINE_LOCATION vagy ACCESS_COARSE_LOCATION szükséges, mivel a BLE-jelek használhatók a pozíció triangulációjához. iOS-en a BLE-hez elegendő a Bluetooth-engedély, Location Permission nem szükséges.

Összegzés

  • Location Permission — az adatvédelem kulcsmechanizmusa, amely szabályozza az alkalmazások hozzáférését az eszköz geolokációjához.
  • Hozzáférési szintek magukban foglalják a használat közbeni (When In Use) és háttérbeli (Always) hozzáférést iOS-en, valamint a pontos (ACCESS_FINE_LOCATION) és hozzávetőleges (ACCESS_COARSE_LOCATION) hozzáférést Androidon.
  • Android megköveteli az engedélyek deklarálását a manifestben és futásidőbeni kérést az Activity Result API-n keresztül az API 23-tól kezdve.
  • iOS megköveteli a kulcsok hozzáadását az Info.plist fájlhoz és a CLLocationManager metódusainak meghívását az ok kötelező feltüntetésével a kérés szövegében.
  • Contextual request — a legjobb gyakorlat, ahol a párbeszédablak a szükség pillanatában jelenik meg, nem az alkalmazás indításakor.
  • Pre-permission screen 25-35%-kal növeli a hozzájárulás konverzióját az Appsflyer (2024) adatai szerint.
  • Felhasználói elutasítás graceful degradation-t igényel — alternatív forgatókönyvet geolokáció használata nélkül.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is