Location Permission ist eine Berechtigung, die eine mobile App vom Benutzer anfordert, um auf Daten über seinen geografischen Standort zuzugreifen. Ohne diese Berechtigung kann die App die Koordinaten des Geräts nicht ermitteln und daher keine Standortdienste bereitstellen. Laut Apple Developer Documentation, 2024 sind alle Apps, die Standortdienste nutzen, verpflichtet, die ausdrückliche Zustimmung des Benutzers über einen Systemdialog einzuholen.
Wichtige Punkte
Location Permission ist ein Betriebssystemmechanismus, der den Zugriff von Apps auf die geografischen Standortdaten des Geräts regelt. Ohne ausdrückliche Zustimmung des Benutzers kann die App keine GPS-Koordinaten, WLAN-Netzwerkdaten oder Mobilfunkmastinformationen abrufen.
Die mobilen Plattformen Android und iOS implementieren ihr eigenes Berechtigungssystem, aber die allgemeine Logik ist dieselbe: Die App deklariert die erforderlichen Berechtigungen im Manifest oder in der Konfigurationsdatei und fordert sie dann zur Laufzeit an. Laut Android Developers, 2024 gehören ab Android 10 alle Standortberechtigungen zur Kategorie der gefährlichen Berechtigungen und erfordern eine Laufzeitanfrage.
Der Grund für diesen Ansatz ist der Schutz der Privatsphäre der Benutzer. Standortdaten können verwendet werden, um Bewegungsprofile zu erstellen, Arbeits- und Freizeitorte zu bestimmen und Personen zu identifizieren. Daher verlangen beide Plattformen eine transparente Erklärung im Anfragedialog: Die App muss den Grund angeben, warum sie Zugriff auf den Standort benötigt.
Die Standortberechtigung ist für jede App erforderlich, deren Funktionalität von der Kenntnis des physischen Standorts des Benutzers abhängt. Karten und Navigation, Lieferdienste, Wetter-Apps, soziale Netzwerke mit Geotagging — all diese Kategorien von Software benötigen Location Permission.
Ohne diese Berechtigung kann die App die Gerätekoordinaten mit keiner der verfügbaren Methoden ermitteln: weder über das GPS-Modul, noch über WLAN-Scanning, noch über die Positionierung durch Mobilfunkmasten. Der Benutzer kann die Berechtigung jederzeit in den Systemeinstellungen widerrufen, wonach die App die Verweigerung korrekt behandeln muss.
Laut einer Studie des Pew Research Center (2024) widerrufen etwa 45% der Benutzer den Standortzugriff in Apps, die ihn nicht für ihre Kernfunktionalität nutzen. Das bedeutet, dass der Entwickler die Anfrage klar begründen und alternative Mechanismen für diejenigen anbieten muss, die Location Permission abgelehnt haben.
Die DSGVO in Europa und das Bundesgesetz 152-FZ in Russland verlangen die Einholung einer informierten Einwilligung für die Verarbeitung von Standortdaten. Die App muss nicht nur über den Systemdialog um Erlaubnis bitten, sondern auch eine separate Mitteilung über die Zwecke der Datenerhebung bereitstellen. Ein Verstoß gegen diese Anforderungen kann mit Geldstrafen von bis zu 20 Millionen Euro oder 4% des Jahresumsatzes des Unternehmens geahndet werden.
Wenn die App keine Location Permission anfordert oder der Benutzer den Zugriff verweigert, muss der Entwickler ein alternatives Szenario vorsehen. Für eine Karten-App könnte dies die manuelle Eingabe der Adresse sein, für eine Liefer-App die Auswahl aus einer Liste gespeicherter Adressen und für einen Wetterdienst die Stadtbestimmung per IP-Adresse. Graceful Degradation (sanfte Verschlechterung) ist eine von Google und Apple empfohlene Standardpraxis.
Die Zugriffsstufen auf den Standort unterscheiden sich auf Android und iOS, obwohl die Grundidee dieselbe ist: Je genauer der Zugriff, desto strengere Anforderungen stellt die Plattform an die App.
| Zugriffsstufe | Android | iOS |
|---|---|---|
| Bei Nutzung | Nur wenn die App aktiv ist | When In Use — nur in der App |
| Hintergrund | Always — ständig, auch im Hintergrund | Always — erfordert zusätzliche App Store-Prüfung |
| Ungefähr | ACCESS_COARSE_LOCATION (Genauigkeit bis 500 m) | Mit Option Precision = Off (iOS 14+) |
ACCESS_FINE_LOCATION bietet Zugriff auf genaue GPS-Koordinaten mit einer Abweichung von bis zu mehreren Metern. Zur Deklaration dieser Berechtigung im Manifest wird die Konstante android.permission.ACCESS_FINE_LOCATION verwendet. ACCESS_COARSE_LOCATION hingegen liefert einen ungefähren Standort mit einer Genauigkeit von bis zu 500 Metern basierend auf WLAN- und Mobilfunkmastdaten.
When In Use erlaubt der App, nur dann Koordinaten zu empfangen, wenn sie auf dem Bildschirm geöffnet ist. Always bietet Zugriff auf den Standort auch im Hintergrund, erfordert jedoch eine obligatorische Überprüfung durch den App Store. Ab iOS 14 kann der Benutzer die genaue Positionierung für jede App separat über den Precision-Schalter deaktivieren.
Die Anforderung von Location Permission auf Android erfolgt in zwei Schritten: Deklaration der Berechtigungen im Manifest und Laufzeitanfrage im Code. Ab Android 6.0 (API 23) werden alle gefährlichen Berechtigungen während der App-Ausführung angefordert, nicht bei der Installation.
Der erste Schritt besteht darin, die erforderlichen Berechtigungen zur Datei AndroidManifest.xml hinzuzufügen. Für die genaue und ungefähre Positionsbestimmung werden unterschiedliche Konstanten verwendet.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Nach der Deklaration im Manifest muss der Systemdialog zur Berechtigungsanfrage im App-Code aufgerufen werden. Sehen wir uns ein Beispiel in Kotlin mit der Activity Result API an.
private val locationPermissionRequest =
registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
when {
permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
// Berechtigung erteilt
getLocation()
}
permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
// Nur ungefährer Standort
getCoarseLocation()
}
else -> {
// Benutzer abgelehnt
showLocationExplanation()
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
checkLocationPermission()
}
Wenn der Benutzer den Zugriff verweigert, erlaubt das Android-System nicht, den Dialog automatisch erneut anzuzeigen. Der Entwickler muss shouldShowRequestPermissionRationale aufrufen, um eine vorherige Erklärung anzuzeigen. Bei wiederholter Verweigerung mit dem Flag Never Ask Again sollte der Benutzer zu den Systemeinstellungen weitergeleitet werden.
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()
}
}
}
Die Anforderung von Location Permission auf iOS erfordert das Hinzufügen spezieller Schlüssel zur Info.plist-Datei und das Aufrufen von Methoden der CLLocationManager-Klasse. Apple legt besonderen Wert auf Datenschutz, daher muss der Erklärungstext im Anfragedialog so spezifisch wie möglich sein.
Um den Standort auf iOS anzufordern, müssen ein oder beide Schlüssel zur Info.plist hinzugefügt werden: NSLocationWhenInUseUsageDescription für den Zugriff bei Nutzung und NSLocationAlwaysAndWhenInUseUsageDescription für den Hintergrundzugriff. Der Wert jedes Schlüssels ist eine Zeichenfolge, die dem Benutzer im Dialog angezeigt wird.
<key>NSLocationWhenInUseUsageDescription</key>
<string>Ihre App benötigt Ihren Standort, um nahegelegene Punkte auf der Karte anzuzeigen.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Ihre App benötigt Hintergrundzugriff auf den Standort, um die Route zu verfolgen.</string>
In Swift-Code erfolgt die Anfrage über eine Instanz von CLLocationManager. Je nach erforderlicher Zugriffsstufe wird requestWhenInUseAuthorization oder requestAlwaysAuthorization aufgerufen.
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
}
}
}
Im Gegensatz zu Android bietet iOS dem Entwickler keine Methode zur Überprüfung von shouldShowRequestPermissionRationale. Das System entscheidet selbst, wann eine Erklärung angezeigt wird. Außerdem kann der Benutzer auf iOS die Berechtigung nur über die Systemeinstellungen ändern — die App kann den Systemdialog nach der Entscheidung des Benutzers nicht erneut anzeigen. RequestAlwaysAuthorization fordert zunächst When In Use an und dann, nach Erhalt der ersten Zustimmung, einen separaten Dialog für den Hintergrundzugriff.
Bewährte Praktiken mit Location Permission helfen, Benutzerablehnungen zu reduzieren und die Anforderungen der App-Stores zu erfüllen. Google und Apple haben Empfehlungen veröffentlicht, deren Einhaltung die Wahrscheinlichkeit der App-Genehmigung erhöht.
Zeigen Sie den Dialog zur Anforderung von Location Permission nicht sofort beim Start der App. Ein Benutzer, der die App gerade geöffnet hat, versteht noch nicht, warum er Zugriff auf den Standort gewähren soll. Contextual Request bedeutet, dass der Dialog in dem Moment erscheint, in dem der Benutzer tatsächlich eine Funktion benötigt, die eine Berechtigung erfordert. Zum Beispiel beim Klicken auf die Schaltfläche „Nächstgelegenes Geschäft finden“.
Zeigen Sie vor dem Systemdialog Ihren eigenen Erklärungsbildschirm (Pre-Permission Screen). Erklären Sie darauf, warum die App den Standort benötigt, welche Daten gesammelt werden und wie sie verwendet werden. Nachdem der Benutzer auf Ihrem Bildschirm auf „Erlauben“ geklickt hat, zeigen Sie den Systemdialog an. Laut Appsflyer (2024) erhöht dieser Ansatz die Zustimmungsrate um 25-35%.
Hintergrundzugriff auf den Standort wird nur von Apps benötigt, die im Hintergrund arbeiten: Navigations-Apps, Aktivitätstracker, Lieferdienste. Wenn Ihre App nur Koordinaten bei geöffnetem Bildschirm benötigt, fordern Sie When In Use an. Der App Store wird die App ablehnen, wenn Always nicht funktional begründet ist. Unter Android wird der Hintergrundzugriff zusätzlich durch die Berechtigung ACCESS_BACKGROUND_LOCATION geregelt.
Häufig gestellte Fragen
Die App muss die Verweigerung korrekt behandeln und ein alternatives Szenario anbieten. Zum Beispiel die manuelle Eingabe der Adresse oder die Stadtbestimmung per IP-Adresse. Der Systemdialog wird nicht erneut angezeigt — der Benutzer muss zu den Einstellungen weitergeleitet werden.
Technisch gesehen ja — der Systemdialog kann ohne vorherigen Bildschirm aufgerufen werden. Allerdings beträgt die Zustimmungsrate ohne Erklärung 30-40%, während sie mit einem vorherigen Bildschirm 60-75% beträgt. Apple und Google empfehlen, den Grund für die Anfrage immer zu erklären.
Verwenden Sie ContextCompat.checkSelfPermission mit der Konstante Manifest.permission.ACCESS_FINE_LOCATION. Die Methode gibt PERMISSION_GRANTED oder PERMISSION_DENIED zurück, wodurch der aktuelle Status ohne Aufruf des Systemdialogs ermittelt werden kann.
ACCESS_FINE_LOCATION bietet Zugriff auf genaue GPS-Koordinaten mit einer Abweichung von 3-10 Metern. ACCESS_COARSE_LOCATION liefert einen ungefähren Standort mit einer Genauigkeit von bis zu 500 Metern basierend auf WLAN und Mobilfunkmasten. Ab Android 12+ kann der Entwickler beide Berechtigungen gleichzeitig anfordern.
Unter Android ist für das Scannen von BLE-Geräten ACCESS_FINE_LOCATION oder ACCESS_COARSE_LOCATION erforderlich, da BLE-Signale zur Positionsbestimmung verwendet werden können. Unter iOS ist für BLE nur die Bluetooth-Berechtigung erforderlich — Location Permission wird nicht benötigt.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.