Geo-Ortung
Neben Download- und Kommunikationsverhalten im Hintergrund bei Multitasking Apps hat auch die Nutzung der Ortungsdienste maßgebliche Auswirkungen auf das Laufzeitverhalten sowie Nutzererlebnis der Apps. Die Nutzung der Ortungsdienste erfolgt über das Core Location Framework (PDF). Entwickler könne mit diesem Framework den Standort des Gerätes abfragen und in ihrer App nutzen.
Die Lokalisierung erfolgt auf Basis der Funkzellendaten, des GPS-Standortes sowie WLAN-Datenbanken. Hierbei lassen sich zwei Varianten der Ortung unterscheiden:
Ein Entwickler legt mit dem --Standard Location Service -- fest, auf welche Ortungshardware des iOS-Gerätes zurückgegriffen werden soll (GPS, Funkzellen, verortete Wi-Fi Hotspots) und in welchen Zyklen der Standort überprüft werden soll. Die Genauigkeit der Ortung wirkt sich hierbei unmittelbar auf den Energieverbrauch aus - je mehr Interaktion zwischen einer App und der Hardware stattfindet, so stärker steigt auch der Energieverbrauch an. Dieser Service kommt z.B. bei Navi-Apps zum Einsatz und steht allen iOS Versionen zur Verfügung. Aktiviert ein Entwickler die Background Location Services, so kann er die Ortungsdienste auch dann in seiner App nutzen, wenn sich diese nicht im Vordergrund befindet.
Seit iOS 4.0 steht außerdem der -- Significant Location-Change Service -- zur Verfügung. Dieser ist akkuschonender, da er die genauen Standortdaten nur dann aktualisiert, wenn sich das Gerät innerhalb einer Funkzelle bewegt bzw. diese wechselt. Dabei kümmert sich iOS selbstständig um die Abfragezyklen. Wird eine Veränderung erkannt, wird der Standort mit Hilfe der WLAN-Datenbanken und des GPS-Moduls so genau wie möglich bestimmt und an die nachfragenden Apps weitergeleitet.
Darüber hinaus kann dieser Dienst auch bestimmte Apps aufwecken, wenn ein z.B. ein vorher definierter Ort erreicht wird (Geofencing). Hierzu baut iOS einen virtuellen Zaun um die GPS Zielkoordinate auf und informiert wartende Apps beim Überqueren des Zauns. Solche Zäune sind über maximal 20 Orte definierbar. Die ortsbezogene Auswertung erfolgt dabei mithilfe des CLLocationManagers. Dieser wird zuerst mit verschiedenen Rahmenparametern initialisiert um z.B. die Auflösungsdistanz der Auswertung festzulegen (Listing 4). Es ist zu beachten, dass sich die Einstellung für den Distanzfilter direkt auf den Energieverbrauch des Gerätes auswirkt.
Listing 4 - Initialisierung CLLocationManager
locationManager=[[CLLocationManager alloc] init];
locationManager.delegate=self;
locationManager.distanceFilter=kCLLocationAccuracyHundredMeters;
locationManager.desiredAccuracy=kCLLocationAccuracyBest;
[locationmanager startUpdatingLocation];
Entwickler können über die Callback-Methoden didEnterRegion und didExitRegion des CLLocationManager feststellen, ob ein Anwender eine Region betritt oder verlässt.
Fazit
Background Fetch, Remote Notifications und Background Transfer Service APIs sind Features um die Erlebnisqualität der Anwender drastisch zu verbessern. Dies geschieht unter bei gleichzeitiger Optimierung der Ressourcen des Endgerätes und ermöglicht es Apps zu erstellen, die zumindest virtuell immer "up-to-date" sind. (mb/cvi)