Significant Location Change (SLC) ist ein iOS-Dienst zur Überwachung großer Gerätebewegungen, der die App nur bei signifikanten Änderungen der geografischen Koordinaten benachrichtigt. Im Gegensatz zum Echtzeit-GPS-Tracking nutzt SLC Mobilfunkmasten zur Standortbestimmung, was einen minimalen Energieverbrauch gewährleistet. Laut der Dokumentation von Apple Developer, 2025 ermöglicht Significant Location Change der App, Geopositions-Updates ohne ständigen GPS-Betrieb zu erhalten, was bis zu 90% Akkuladung im Vergleich zum kontinuierlichen Tracking einspart.
Wichtige Punkte
Significant Location Change (SLC) ist ein energieeffizienter iOS-Geolokalisierungsdienst, der in das Core Location Framework integriert ist. Er wurde für Apps entwickelt, die große Benutzerbewegungen verfolgen müssen, ohne ständig das GPS-Modul zu verwenden. SLC wird automatisch beim Wechsel zwischen Mobilfunkmasten aktiviert und benachrichtigt die App über den Delegaten CLLocationManagerDelegate mit der Methode didUpdateLocations.
Im Gegensatz zum GPS-Tracking (Standard startUpdatingLocation) benötigt SLC keine konstante Prozessoraktivität oder GPS-Chip-Nutzung. iOS verwendet Signale von Mobilfunkmasten zur Bestimmung des ungefähren Standorts und startet die App nur, wenn eine signifikante Koordinatendifferenz erkannt wird. Dadurch kann die App zwischen den Updates schlafen und dabei minimale Energie verbrauchen.
SLC ist auf allen Geräten mit Mobilfunkmodul ab iOS 5 verfügbar. Auf iPod Touch und iPad Wi-Fi Only ist der Dienst nicht verfügbar, da er Mobilfunkmasten zur Koordinatenbestimmung verwendet. Core Location entscheidet automatisch, welche Ereignisse als signifikant gelten — der Entwickler kann die SLC-Empfindlichkeit nicht konfigurieren oder einen Mindestabstand für den Auslöser festlegen.
SLC ist ideal für Apps, die keine hohe Geolokalisierungsgenauigkeit benötigen: Wetter-Tracker, Lieferdienste, Apps zum Finden nahegelegener Orte und Analysen besuchter Orte. SLC wird auch vom iOS-System zur Aktivierung von Geofencing im Energiesparmodus verwendet. Navigations-Apps benötigen ein genaueres GPS-Tracking.
Significant Location Change funktioniert durch Analyse der Mobilfunkmasten-IDs (Cell ID), die das Gerät beim Verbinden mit dem Netzwerk erhält. iOS verfügt über eine Datenbank mit Mastkoordinaten und kann den ungefähren Standort ohne Einschalten des GPS bestimmen. Wenn das Gerät zu einem neuen Mast wechselt, vergleicht das System den neuen mit dem vorherigen Standort und startet bei einer signifikanten Differenz die App zur Ereignisverarbeitung.
Das System verwendet einen Cluster-Ansatz: Der geografische Raum wird in Cluster mit einem bestimmten Radius unterteilt. SLC generiert ein Ereignis nur beim Überqueren einer Clustergrenze, nicht bei jeder Mikrobewegung innerhalb des Clusters. Dies verhindert lawinenartige App-Aufrufe bei Bewegungen innerhalb eines einzelnen Versorgungsbereichs (z. B. innerhalb eines Gebäudes oder Bezirks). Die Genauigkeit von SLC reicht von 500 Metern bis zu mehreren Kilometern, abhängig von der Dichte der Mobilfunkmasten.
Wenn iOS eine signifikante Änderung erkennt, weckt es die App aus dem Hintergrundzustand (falls nicht ausgeführt) und übergibt das Ereignis an den Core Location Delegaten. Die App erhält eine kurze Verarbeitungszeit (etwa 10–30 Sekunden Hintergrundzeit) — genug, um Koordinaten zu verarbeiten und bei Bedarf ein genaueres Update über GPS zu planen.
SLC hat das Privileg, die App aus dem Zustand Gesperrt oder Hintergrund aufzuwecken. Wurde die App vom System aufgrund von Speichermangel beendet, startet SLC sie im Hintergrund neu. Dazu muss die App UIApplication.LaunchOptionsKey.location in der Methode didFinishLaunchingWithOptions abonnieren. Nach der Verarbeitung des Ereignisses kann das System die App wieder in den Gesperrt-Zustand versetzen.
Die Auslöser für SLC werden ausschließlich vom iOS-System bestimmt — der Entwickler kann programmatisch nicht beeinflussen, welche Koordinatenänderungen als signifikant gelten. Es gibt jedoch dokumentierte Szenarien, in denen SLC garantiert ein Ereignis generiert. Das Verständnis dieser Auslöser hilft dem Entwickler, das korrekte App-Verhalten zu entwerfen.
Der Wechsel des Mobilfunkmasten ist der primäre SLC-Auslöser. Wenn das Gerät zwischen Mobilfunkmasten wechselt (bei Bewegung durch die Stadt oder Autobahn), prüft das System, ob sich die Koordinaten zwischen altem und neuem Mast ausreichend geändert haben. Wenn ja, wird ein Ereignis generiert. In städtischen Gebieten mit einem dichten Mastnetz kann SLC alle 1–3 Kilometer auslösen.
Wenn eine andere App oder ein Systemdienst (z. B. Mein iPhone suchen, Navigation) das GPS-Modul aktiviert, kann SLC ebenfalls ein genaues Koordinaten-Update erhalten. Dies ist ein Nebeneffekt: GPS bestimmt den genauen Standort und iOS leitet ihn an alle für SLC registrierten Apps weiter. Es wird jedoch nicht empfohlen, sich auf diesen Auslöser zu verlassen — er ist nicht garantiert.
Obwohl SLC Wi-Fi nicht direkt nutzt, kann der Wechsel des Wi-Fi-Netzwerks indirekt ein Ereignis auslösen, wenn das Gerät neue Koordinaten über den Apple Location Service (Standort basierend auf Wi-Fi-Datenbanken) erhält. iOS hasht die Koordinaten von Wi-Fi-Zugangspunkten und verwendet sie zur Positionsverfeinerung zwischen Mastwechseln.
| Auslöser | Garantie | Latenz | Genauigkeit |
|---|---|---|---|
| Mobilfunkmastenwechsel | Hoch | 1–30 Sek | 500 m – 3 km |
| GPS anderer Apps | Niedrig | Sofort | Bis zu 10 m |
| Wi-Fi-Wechsel | Mittel | Bis zu 5 Min | 100–500 m |
iOS bietet mehrere Mechanismen zur Geolokalisierung, jeweils mit eigener Genauigkeit, Energieverbrauch und Anwendungsfällen. Significant Location Change nimmt eine Nische zwischen grober Mast-Näherung und präzisem GPS-Tracking ein und bietet eine optimale Balance für Apps, die keine hohe Echtzeitgenauigkeit benötigen.
Der Standard Location Service (startUpdatingLocation()) verwendet GPS, Wi-Fi und Mobilfunkmasten für maximale Koordinatengenauigkeit. Die Genauigkeit beträgt bis zu 10 Meter, aber der Energieverbrauch ist hoch — das GPS-Modul ist ständig aktiv. Geeignet für Navigation, Fitness-Tracker und AR-Apps. SLC hingegen nutzt GPS nicht ständig und hat eine Genauigkeit von 500 Metern oder weniger.
Region Monitoring verfolgt das Betreten und Verlassen definierter geografischer Zonen. Im Gegensatz zu SLC definiert der Entwickler die Regionsgrenzen (Radius ab 100 Metern). Geofencing verwendet SLC als Hilfsmechanismus — das System bestimmt zunächst den ungefähren Standort über SLC und aktiviert dann GPS zur genauen Ein-/Austrittserkennung. Die maximale Anzahl überwachter Regionen beträgt 20.
Visit Monitoring ist ein spezialisierter iOS 8+-Dienst, der Ortsbesuche (Ankunft und Abreise) verfolgt. Er verwendet eine Kombination aus SLC und anderen Signalen, um zu bestimmen, wann ein Benutzer an einem Ort angehalten und wann er ihn verlassen hat. Visit Monitoring ist energieeffizienter als SLC, da es weniger Ereignisse generiert und maschinelles Lernen auf dem Gerät verwendet.
| Dienst | Genauigkeit | Energieverbrauch | Hintergrund |
|---|---|---|---|
| SLC | 500 m – 3 km | Sehr niedrig | Ja |
| Standard GPS | Bis zu 10 m | Hoch | Benötigt Berechtigung |
| Geofencing | Ab 100 m | Niedrig | Ja |
| Visit Monitoring | Bis zu 100 m | Sehr niedrig | Ja |
SLC ist die energieeffizienteste Methode zur Geolokalisierung auf iOS, abgesehen von Visit Monitoring. Laut Apple verbraucht SLC etwa 0,1–0,5% Akkuladung pro Stunde in einem typischen Nutzungsszenario, während kontinuierliches GPS-Tracking 5–10% pro Stunde verbrauchen kann. Die Einsparung wird dadurch erreicht, dass das GPS-Modul nur für kurze Zeit zur Koordinatenüberprüfung bei jedem Ereignis aktiviert wird.
iOS verwaltet den SLC-Energieverbrauch durch Akkusoptimierung. Wenn das System feststellt, dass die App SLC-Ereignisse zu häufig verarbeitet (z. B. bewegt sich das Gerät in einem Zug und häufige Mastwechsel erzeugen viele Ereignisse), kann iOS die Benachrichtigungshäufigkeit vorübergehend reduzieren. Dies ist ein automatischer Mechanismus — der Entwickler kann ihn nicht deaktivieren.
Mit jeder Hauptversion von iOS verschärft Apple die Richtlinien für den Hintergrundzugriff auf den Standort. Ab iOS 13 wurde der Systemdialog zur Anforderung der Hintergrundstandortberechtigung geändert: Der Benutzer muss explizit Immer auswählen, nicht nur Während der Nutzung der App. Ohne die Immer-Berechtigung funktioniert SLC nicht, wenn die App im Hintergrund ist oder vom System beendet wurde.
Betrachten wir eine vollständige Implementierung von Significant Location Change in Swift. Das Beispiel umfasst die Konfiguration von CLLocationManager, die Anforderung der Immer-Berechtigung, den Start der Überwachung, die Ereignisbehandlung und die Unterstützung für den Neustart der App nach Beendigung durch das System. Der Code verwendet modernes Swift mit async/await zur Koordinatenverarbeitung und Hintergrundaufgaben über BGTaskScheduler.
import CoreLocation
import UIKit
class LocationManager: NSObject, CLLocationManagerDelegate {
private let manager = CLLocationManager()
override init() {
super.init()
manager.delegate = self
manager.pausesLocationUpdatesAutomatically = true
manager.desiredAccuracy = kCLLocationAccuracyThreeKilometers
}
func requestAlwaysAuthorization() {
manager.requestAlwaysAuthorization()
}
func startSignificantLocationUpdates() {
manager.startMonitoringSignificantLocationChanges()
}
func locationManager(_ manager: CLLocationManager,
didUpdateLocations locations: [CLLocation]) {
guard let location = locations.last else { return }
Task.detached {
await LocationProcessor.handleLocationUpdate(location)
}
}
func locationManager(_ manager: CLLocationManager,
didFailWithError error: Error) {
Logger.log("SLC error: \(error.localizedDescription)")
}
}
Wurde die App vom System beendet, startet SLC sie automatisch neu, wenn ein neues Ereignis eintritt. Im AppDelegate muss eine Prüfung auf standortbasierten Start über UIApplication.LaunchOptionsKey.location hinzugefügt werden. Nach dem Neustart sollte die App CLLocationManager initialisieren und startMonitoringSignificantLocationChanges() aufrufen, um die Überwachung fortzusetzen.
class AppDelegate: NSObject, UIApplicationDelegate {
private let manager = LocationManager()
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?) -> Bool {
if launchOptions?.keys.contains(.location) == true {
Logger.log("App relaunched by SLC event")
}
manager.requestAlwaysAuthorization()
manager.startSignificantLocationUpdates()
return true
}
}
Die korrekte Verwendung von Significant Location Change erfordert ein Gleichgewicht zwischen Funktionalität und Energieeffizienz. Apple kontrolliert streng den Hintergrundzugriff auf die Geolokalisierung, und Apps, die SLC missbrauchen oder ohne klare Notwendigkeit verwenden, riskieren eine Ablehnung bei der Veröffentlichung im App Store.
In der Info.plist müssen Begründungstexte hinzugefügt werden: NSLocationAlwaysAndWhenInUseUsageDescription und NSLocationWhenInUseUsageDescription. Die Beschreibung sollte klar erklären, warum die App Hintergrundzugriff auf den Standort benötigt. Die App Review liest diese Texte und kann die App ablehnen, wenn die Begründung unzureichend oder die Formulierung vage ist. Beispiel: Diese App verwendet SLC, um die Wettervorhersage zu aktualisieren, wenn Sie sich bewegen.
Starten Sie keine teuren Operationen (GPS-Standort, Netzwerkanfragen) bei jedem SLC-Ereignis. SLC kann Dutzende von Ereignissen pro Stunde generieren, wenn Sie sich in einem Fahrzeug bewegen. Verwenden Sie Debouncing: Speichern Sie die Zeit der letzten vollständigen Aktualisierung und überspringen Sie die Verarbeitung, wenn weniger als 5–10 Minuten seit der letzten Aktualisierung vergangen sind. Dies spart Akku und Netzwerkverkehr.
Verwenden Sie für die längere Verarbeitung nach einem SLC-Ereignis BGTaskScheduler. Wenn die App ein SLC-Ereignis erhält, kann sie eine Hintergrundaufgabe über BGProcessingTaskRequest oder BGAppRefreshTaskRequest planen. Dies ermöglicht es, ressourcenintensive Operationen (Serversynchronisation, Routenanalyse) auf das nächste Hintergrundausführungsfenster zu verschieben, ohne den Haupt-Antwortthread für SLC zu blockieren.
Häufig gestellte Fragen
Significant Location Change (SLC) ist ein energieeffizienter iOS-Dienst zur Überwachung großer Gerätebewegungen basierend auf Mobilfunkmasten. Er verbraucht bis zu 90% weniger Energie als kontinuierliches GPS-Tracking und ist für Apps geeignet, die keine hohe Geolokalisierungsgenauigkeit benötigen.
Die SLC-Genauigkeit variiert von 500 Metern bis zu 3 Kilometern, abhängig von der Dichte der Mobilfunkmasten. In städtischen Gebieten ist die Genauigkeit höher (näher an 500 m), in ländlichen Gebieten niedriger (bis zu mehreren Kilometern). SLC ist nicht für die präzise Koordinatenbestimmung ausgelegt — es ist eine Ressource für die grobe Bewegungsüberwachung.
Rufen Sie CLLocationManager.requestAlwaysAuthorization() auf, nachdem Sie den String NSLocationAlwaysAndWhenInUseUsageDescription zur Info.plist hinzugefügt haben. Ab iOS 13 muss der Benutzer im Systemdialog explizit Immer auswählen. Ohne diese Berechtigung funktioniert SLC nicht im Hintergrund.
Ja, SLC kann eine App neu starten, wenn sie vom System aufgrund von Speichermangel beendet wurde. Prüfen Sie beim Start UIApplication.LaunchOptionsKey.location in der Methode didFinishLaunchingWithOptions und rufen Sie startMonitoringSignificantLocationChanges() auf, um die Überwachung fortzusetzen.
SLC verwendet nur Mobilfunkmasten und aktiviert GPS nicht ständig, was bis zu 90% Akkuersparnis ermöglicht. Die Genauigkeit liegt zwischen 500 m und 3 km. Der Standard Location Service verwendet GPS, Wi-Fi und Masten, mit einer Genauigkeit von bis zu 10 m, verbraucht aber deutlich mehr Energie. SLC eignet sich für die Hintergrundüberwachung, GPS für die Navigation.
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.
Lesen Sie auch