Background Fetch, Remote Notifications und Background Transfer Service

Systemressourcen bei der App-Entwicklung für iOS schonen

09.04.2015
Von   
Mark Zimmermann leitet hauptberuflich das Center of Excellence (CoE mobile) zur mobilen Lösungsentwicklung bei der EnBW Energie Baden-Württemberg AG in Karlsruhe. Er weist mehrere Jahre Erfahrung in den Bereichen Mobile Sicherheit, Mobile Lösungserstellung, Digitalisierung und Wearables auf. Der Autor versteht es, seine Themen aus unterschiedlichsten Blickwinkeln für unternehmensspezifische Herausforderungen darzustellen. Neben seiner hauptberuflichen Tätigkeiten ist er Autor zahlreicher Artikel in Fachmagazinen.

Background fetch

Vor iOS 7 konnten Entwickler in Apps lediglich auf Inhalte aus dem Internet zugreifen, wenn sich diese im Vordergrund befanden. Dies führte dazu, dass viele Apps beim Start erst einmal eine Initialisierung durchführen mussten, um ihre Inhalte zu aktualisieren - bedingt durch diese Verzögerung beim Datenabruf spürten Anwender eine Latenz bei der Bedienung bis aktuelle Informationen angezeigt werden.

Die Verbindungsgeschwindigkeit des Endgerätes sowie die Qualität der Datenverbindung stellen hierbei einen maßgeblichen Faktor für die Dauer dar, bis die Daten in dieser Anwendung verfügbar sind und aktualisiert dargestellt werden. Weiterhin beeinflusste die Länge der Inaktivität einer App die Menge der nachzuladenden Daten.

Mit der Background Fetch API stellt iOS ein Mittel zur Verfügung um diesem Problem zu begegnen. Dank der API kann eine App Content laden - auch wenn sie im Hintergrund ist.

iOS stellt solchen Apps Ausführungszeit des Systems zur Verfügung, bis die Daten-Updates abgeschlossen sind. Nach Abschluss der Datentransaktionen versetzt iOS 8 die Apps wieder in den pausierten Zustand bis der Anwender die App - dann mit aktualisierten Daten - öffnet. Der Update-Zeitpunkt kann zu einem vom Entwickler vordefinierten Zeitpunkt oder zu einem vom System bestimmten Intervall erfolgen.

Aus Energieeffizienzgründen empfiehlt der Autor, soweit möglich die Systemintervalle zu nutzen. Wenn aus App-spezifischen Gründen eigene Intervalle definiert werden müssen, so sollten diese mit Bedacht gewählt werden, damit kein unnötiger Ressourcenverbrauch erzeugt wird.

Überlässt der Entwickler dem Systemintervall den Vorzug, erstellt iOS 8 Prognosen über die Nutzungszeitpunkte des Anwenders für die jeweilige App. Dies wird durch eine systeminterne Protokollierung der Nutzungshäufigkeit und Zeiten bewerkstelligt. Mit diesen Informationen wird systemintern bestimmt, wann die Daten geladen werden müssen, um sie dem Anwender rechtzeitig "vorgeladen" vorzuhalten.

Xcode Background Funktionen aktivieren (Tab: Capabilities)
Xcode Background Funktionen aktivieren (Tab: Capabilities)

Um diese Multitasking-API zu nutzen sind drei Schritte für den Entwickler notwendig. Der erste Schritt in diesem Prozess ist es, die Option des Background Fetching innerhalb des Xcode Projektes (siehe Abbildung) zu aktivieren.

Neben der Aktivierung im eigentlichen Projekt sollte innerhalb der App zunächst der Status der Hintergrunddienste abgefragt werden. So hat der Anwender über die Systemeinstellungen dennoch die Möglichkeit diese zu deaktivieren oder ggf. zu überschreiben.

Mit der in Listing 1 angegebenen Prüfung kann der Entwickler prüfen, ob die Dienste genutzt werden können um auf die gegebenen Möglichkeiten innerhalb seiner App zu reagieren.