Tutorial: Progressive Web Apps mit Workbox, Teil 3

Wer Progressive Web Apps komplett offline betreiben möchte, muss das Herzstück der Anwendung richtig konfigurieren: den Service Worker.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht
Tutorial: Progressive Web Apps mit Workbox, Teil 3
Lesezeit: 12 Min.
Von
  • Steffen Jahr
Inhaltsverzeichnis

Man ist unterwegs, öffnet eine Webanwendung und kann sie nicht ausführen: Es besteht keine oder nur eine unzureichende Verbindung zum Server. Wer wie im zweiten Teil der Serie beschrieben seine Progressive Web App (PWA) auf dem Home-Bildschirm des Smartphones abgelegt hat, könnte annehmen, dass sie nun ohne Internetanbindung funktioniert. Leider trifft das nicht zu, der Entwickler muss die PWA weiter anpassen. Denn noch immer handelt es sich um eine Webanwendung, auch wenn sie nicht mehr so aussieht. Ohne Internetverbindung gibt es eine Fehlermeldung. Dieser Teil beschreibt, wie sich die Anwendung offline nutzen lässt. Eine vom Internet unabhängige Progressive Web App zum Empfangen von Push-Nachrichten liegt als Demo auf GitHub.

Google Chrome bietet zur Überbrückung von Offlinezeiten ein Minispiel an.

Damit die Anwendung offline arbeiten kann, muss sie inklusive aller notwendigen Daten auf dem Client liegen. Hierbei hilft der Service Worker, das Herzstück jeder PWA. Er ist dafür zuständig, Push-Nachrichten zu empfangen, sie anzuzeigen, die Anwendung offline bereitzustellen und sie mit Updates aktuell zu halten. Beim Service Worker handelt es sich um eine eigene kleine Applikation, die neben der eigentlichen Anwendung werkelt und ihre Aufgaben im Hintergrund erledigt. Sie läuft in einem eigenen Thread, damit das Hauptprogramm bei Schwierigkeiten nicht in Mitleidenschaft gezogen wird. Das bedeutet aber auch, dass es die grafischen Komponenten nicht direkt steuern kann.

Allerdings gibt es die Möglichkeit, die beiden Komponenten über ein Nachrichtensystem kommunizieren zu lassen. Die Anwendung darf dann das User Interface auf Anweisung des Service Workers aktualisieren. Dieser besteht aus einer JavaScript-Datei, die der Entwickler in der Hauptanwendung registriert: