Was ist CoreLocation und wofür wird es benötigt?
CoreLocation ist ein integriertes Framework von Apple für die Plattformen iOS, macOS, watchOS und tvOS. Es bietet Entwicklern Zugriff auf die Hardware- und Softwarefunktionen zur Standortbestimmung eines Geräts. Im Gegensatz zu Drittanbieter-Bibliotheken muss CoreLocation nicht über Paketmanager (CocoaPods, SPM) installiert werden – es ist fester Bestandteil des Standard-SDK.
Die wichtigsten Funktionen des Frameworks:
- Ermittlung der aktuellen geografischen Koordinaten (Breiten- und Längengrad).
- Echtzeit-Verfolgung von Standortänderungen.
- Geofencing – Benachrichtigungen beim Betreten/Verlassen eines definierten Bereichs.
- Bestimmung der Himmelsrichtung (Kompass) und der Bewegungsgeschwindigkeit.
- Reverse Geocoding (Umwandlung von Koordinaten in Adressen) und Forward Geocoding (Adresse in Koordinaten).
Die Bibliothek ist unverzichtbar für Navigations-Apps, Lieferdienste, Fitness-Tracker, soziale Netzwerke mit Geotagging und alle anderen Anwendungen, die den Standort des Nutzers benötigen.
Einrichtung von CoreLocation
Da CoreLocation ein Teil des Betriebssystems ist, muss es nicht über pip oder npm installiert werden. Für die Nutzung reicht es aus, das Modul in den Code zu importieren.
Wichtig: Für die Arbeit mit Geolokalisierung muss eine Beschreibung der Nutzung in der Datei Info.plist Ihres Projekts hinzugefügt werden. Ohne diesen Eintrag wird die App beim Versuch, eine Berechtigung anzufordern, abstürzen.
Fügen Sie einen der folgenden Schlüssel hinzu (abhängig davon, wann Sie den Standort benötigen):
NSLocationWhenInUseUsageDescription– für den Zugriff nur bei aktiver Nutzung der App.NSLocationAlwaysAndWhenInUseUsageDescription– für dauerhaften Zugriff (auch im Hintergrund).
Als Wert geben Sie einen Text ein, der dem Benutzer im Dialog zur Berechtigungsanfrage angezeigt wird (z. B. "Die App benötigt Zugriff auf Ihren Standort, um nahegelegene Cafés anzuzeigen").
Schnellstart mit einem Codebeispiel
Betrachten wir ein minimales Beispiel zur Ermittlung der aktuellen Benutzerkoordinaten.
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
}
// MARK: - CLLocationManagerDelegate
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard let location = locations.last else { return }
print("Breitengrad: \(location.coordinate.latitude)")
print("Längengrad: \(location.coordinate.longitude)")
// Stoppt das Update, um den Akku zu schonen
locationManager.stopUpdatingLocation()
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print("Fehler bei der Standortermittlung: \(error.localizedDescription)")
}
}
Dieser Code erstellt einen Manager, fordert die Berechtigung des Benutzers an und beginnt mit der Verfolgung. Sobald die Koordinaten ermittelt wurden, werden sie in der Konsole ausgegeben.
Wichtige Methoden/Funktionen von CoreLocation
Im Folgenden werden die wichtigsten Methoden und Eigenschaften der Klasse CLLocationManager sowie der Hilfsklassen vorgestellt.
1. requestWhenInUseAuthorization()
Beschreibung: Fordert die Berechtigung des Benutzers für den Zugriff auf den Standort nur während der Nutzung der App an (die App ist im Vordergrund aktiv).
Parameter: Keine.
Beispiel:
let manager = CLLocationManager()
manager.requestWhenInUseAuthorization()
2. requestAlwaysAuthorization()
Beschreibung: