Standortberechtigung anfordern
Behandeln Sie Berechtigungen und Datenschutz korrekt.
Standortberechtigung anfordern ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum der Standort eine Berechtigung benötigt
Auf Apple-Plattformen ist der Zugriff auf den Standort des Benutzers ein datenschutzsensibler Vorgang. Ihre App muss ausdrücklich eine Autorisierung anfordern, bevor Core Location Koordinaten liefert. Das System zeigt beim ersten Anfordern einen Berechtigungsdialog an.
- Die Autorisierung wird vom Benutzer pro App erteilt.
- Sie können sie nicht programmgesteuert umgehen.
import CoreLocation
let manager = CLLocationManager()Nutzungshinweisschlüssel in Info.plist
Bevor Sie eine Autorisierung anfordern, müssen Sie in Info.plist eine Zeichenfolge mit einer Beschreibung der Nutzung hinzufügen. Diese Zeichenfolgen werden dem Benutzer im Berechtigungsdialog angezeigt. Die beiden wichtigsten sind:
NSLocationWhenInUseUsageDescription— nur für den Zugriff im Vordergrund.NSLocationAlwaysAndWhenInUseUsageDescription— auch für den Zugriff im Hintergrund.
Wenn der relevante Schlüssel fehlt, schlägt die Anfrage stillschweigend fehl oder die App stürzt ab.
<!-- Info.plist -->
<key>NSLocationWhenInUseUsageDescription</key>
<string>We use your location to show nearby places.</string>CLLocationManager erstellen
CLLocationManager ist das zentrale Objekt, das die Ortungsdienste koordiniert. Sie erstellen eine Instanz, behalten eine starke Referenz darauf und weisen ihr einen Delegate zu, um Rückrufe zu empfangen.
final class LocationService: NSObject {
let manager = CLLocationManager()
override init() {
super.init()
manager.delegate = self
}
}Autorisierung bei Verwendung anfordern
Rufen Sie requestWhenInUseAuthorization() auf, um Zugriff im Vordergrund anzufordern. Das System zeigt den Dialog nur einmal an; danach wird die Auswahl gespeichert. Wenn die Entscheidung bereits getroffen wurde, hat der Aufruf keine Wirkung.
func requestPermission() {
manager.requestWhenInUseAuthorization()
}Always-Autorisierung anfordern
Für Aktualisierungen im Hintergrund, etwa Geofencing oder kontinuierliches Tracking, rufen Sie requestAlwaysAuthorization() auf. Apple verlangt, dass Sie zunächst die Autorisierung bei Verwendung erhalten und anschließend auf Always erweitern. Verwenden Sie diese Möglichkeit sparsam und begründen Sie sie in Ihrem Nutzungshinweis.
func requestAlways() {
manager.requestAlwaysAuthorization()
}Autorisierungsstatus lesen
Der aktuelle Berechtigungsstatus befindet sich in manager.authorizationStatus (einer Instanzeigenschaft ab iOS 14). Mögliche Werte sind unter anderem .notDetermined, .denied, .restricted, .authorizedWhenInUse und .authorizedAlways.
let status = manager.authorizationStatus
switch status {
case .notDetermined: print("Ask the user")
case .denied, .restricted: print("No access")
case .authorizedWhenInUse, .authorizedAlways: print("Good to go")
@unknown default: break
}Der CLLocationManagerDelegate
Änderungen der Autorisierung werden asynchron über den Delegate übermittelt. Implementieren Sie locationManagerDidChangeAuthorization(_:), um zu reagieren, wenn der Benutzer eine Auswahl trifft. Gehen Sie niemals davon aus, dass die Berechtigung unmittelbar nach dem Anfordern erteilt wurde.
extension LocationService: CLLocationManagerDelegate {
func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) {
switch manager.authorizationStatus {
case .authorizedWhenInUse, .authorizedAlways:
manager.startUpdatingLocation()
default:
print("Not authorized")
}
}
}Verweigerte oder eingeschränkte Zugriffe behandeln
Wenn der Benutzer den Zugriff verweigert, können Sie ihn nicht erneut anfordern. Erkennen Sie stattdessen .denied und führen Sie den Benutzer zu den Einstellungen. .restricted bedeutet, dass der Zugriff durch die Kindersicherung oder ein MDM-Profil blockiert ist und auch innerhalb der App nicht wiederhergestellt werden kann.
func handle(_ status: CLAuthorizationStatus) {
if status == .denied {
// Deep-link the user to Settings > Privacy > Location
print("Open Settings to enable location")
}
}Genauigkeitsautorisierung (präzise oder reduziert)
Seit iOS 14 können Benutzer auch nur eine reduzierte (ungefähre) Genauigkeit gewähren. Prüfen Sie manager.accuracyAuthorization. Wenn Sie tatsächlich präzise Daten benötigen, etwa für eine Turn-by-Turn-Navigation, rufen Sie requestTemporaryFullAccuracyAuthorization(withPurposeKey:) mit einem in Info.plist definierten Schlüssel auf.
if manager.accuracyAuthorization == .reducedAccuracy {
manager.requestTemporaryFullAccuracyAuthorization(
withPurposeKey: "PreciseForNavigation"
)
}Prüfen, ob die Ortungsdienste aktiviert sind
Zusätzlich zur appbezogenen Berechtigung kann die geräteweite Einstellung für die Ortungsdienste deaktiviert sein. Prüfen Sie CLLocationManager.locationServicesEnabled() in einer Hintergrundwarteschlange, da der Aufruf im Hauptthread blockieren kann. Wenn die Ortungsdienste deaktiviert sind, erhält keine App Standortdaten.
DispatchQueue.global().async {
if CLLocationManager.locationServicesEnabled() {
print("System location is on")
} else {
print("System location is off")
}
}Ein vollständiger Autorisierungsablauf
Zusammengefasst: Erstellen Sie den Manager, legen Sie den Delegate fest, fordern Sie die Autorisierung bei Verwendung an und starten Sie anschließend die Aktualisierungen im Autorisierungsrückruf. Dies ist das übliche Muster für jede standortbezogene Funktion.
final class LocationService: NSObject, CLLocationManagerDelegate {
let manager = CLLocationManager()
override init() {
super.init()
manager.delegate = self
manager.requestWhenInUseAuthorization()
}
func locationManagerDidChangeAuthorization(_ m: CLLocationManager) {
if m.authorizationStatus == .authorizedWhenInUse {
m.startUpdatingLocation()
}
}
}Kurztest: Autorisierung
Testen Sie Ihr Verständnis des Autorisierungsablaufs.
Zusammenfassung: Autorisierung anfordern
Sie haben gelernt, wie Sie die Standortberechtigung sicher anfordern:
- Fügen Sie
NSLocationWhenInUseUsageDescriptionund bei Bedarf die Always-Variante zu Info.plist hinzu. - Erstellen Sie einen
CLLocationManager, behalten Sie eine starke Referenz darauf und legen Sie seinen Delegate fest. - Rufen Sie
requestWhenInUseAuthorization()auf und erweitern Sie die Autorisierung nur bei Bedarf auf Always. - Reagieren Sie in
locationManagerDidChangeAuthorization(_:)und behandeln Sie Fälle mit verweigerter, eingeschränkter oder reduzierter Genauigkeit.
Häufig gestellte Fragen
Ist die Lektion „Standortberechtigung anfordern“ kostenlos?
Ja — der vollständige Text von „Standortberechtigung anfordern“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Standortberechtigung anfordern“?
Behandeln Sie Berechtigungen und Datenschutz korrekt. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Standortberechtigung anfordern“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Standortberechtigung anfordern
- Standort des Benutzers abrufen
- Karten in SwiftUI anzeigen
- Geocoding und Regionen