Allgemein, Interessantes, Nerdkram

Anleitung: Eine Progressive Web App (PWA) erstellen

Darstellung eines Smartphones mit einer progressiven Webanwendung und verschiedenen grafischen Elementen.

Grafik einer progressiven Webanwendung auf einem Smartphone.

Diese Anleitung zeigt dir, wie du eine Progressive Web App (PWA) für deine Website erstellst. Eine PWA verbessert die Benutzererfahrung, indem sie eine app-ähnliche Oberfläche und Offline-Unterstützung bietet.

Was ist eine Progressive Web App (PWA)?

Eine PWA ist eine moderne Webanwendung, die:

  • Offline funktioniert dank Caching.
  • Auf dem Home-Bildschirm installierbar ist.
  • Schnell lädt und eine native App-Erfahrung bietet.

Schritt 1: manifest.json erstellen

Die manifest.json definiert die grundlegenden Metadaten der PWA wie Name, Icon und Theme-Farbe.

Erstelle eine Datei namens manifest.json im Root-Verzeichnis der Website:

{
  "name": "Meine PWA",
  "short_name": "PWA",
  "description": "Eine progressive Web App",
  "start_url": "/",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#4caf50",
  "icons": [
    {
      "src": "/icons/icon-192x192.png",
      "type": "image/png",
      "sizes": "192x192"
    },
    {
      "src": "/icons/icon-512x512.png",
      "type": "image/png",
      "sizes": "512x512"
    }
  ],
  "scope": "/",
  "orientation": "portrait"
}

Erklärung der wichtigsten Felder:

  • name: Der vollständige Name der Anwendung.
  • short_name: Kürzerer Name für den Home-Bildschirm.
  • start_url: Startpunkt der App.
  • display: standalone sorgt dafür, dass die PWA wie eine native App läuft.
  • icons: Verweise auf App-Icons in verschiedenen Größen.

Verlinkung in der index.html:

<link rel="manifest" href="/manifest.json">

Schritt 2: Service Worker erstellen

Der Service Worker ermöglicht Caching und Offline-Verfügbarkeit.

Erstelle eine Datei namens service-worker.js im Root-Verzeichnis der Website:

const CACHE_NAME = "pwa-cache-v1";
const urlsToCache = [
    "/",
    "/index.html",
    "/manifest.json",
    "/icons/icon-192x192.png",
    "/icons/icon-512x512.png"
];

// Installationsphase
self.addEventListener("install", (event) => {
    event.waitUntil(
        caches.open(CACHE_NAME).then((cache) => {
            return cache.addAll(urlsToCache);
        })
    );
});

// Aktivierung und Cache-Bereinigung
self.addEventListener("activate", (event) => {
    event.waitUntil(
        caches.keys().then((cacheNames) => {
            return Promise.all(
                cacheNames.map((cache) => {
                    if (cache !== CACHE_NAME) {
                        return caches.delete(cache);
                    }
                })
            );
        })
    );
});

// Fetch Event für Offline-Unterstützung
self.addEventListener("fetch", (event) => {
    event.respondWith(
        caches.match(event.request).then((response) => {
            return response || fetch(event.request);
        })
    );
});

Erklärung:

  • Installationsphase: Ressourcen werden beim ersten Besuch gecacht.
  • Aktivierung: Alte Caches werden gelöscht.
  • Fetch-Event: Greift zuerst auf den Cache zu und nutzt nur das Netzwerk, wenn nötig.

Schritt 3: Service Worker im HTML registrieren

Registriere den Service Worker im <head> der index.html:

<script>
if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('/service-worker.js')
        .then(() => console.log('Service Worker registriert'))
        .catch((error) => console.error('Service Worker Fehler:', error));
}
</script>

Schritt 4: HTTPS sicherstellen

Ein Service Worker funktioniert nur über eine gesicherte HTTPS-Verbindung. Stelle sicher, dass dein Webserver mit einem SSL-Zertifikat ausgestattet ist.


Schritt 5: Cache und Service Worker aktualisieren

  1. Browser-Cache leeren: Entwicklertools → Application → Clear Storage.
  2. Service Worker neu registrieren: Entwicklertools → Application → Service Worker → Unregister.

✅ Zusammenfassung

  • manifest.json für die Metadaten.
  • service-worker.js für Caching und Offline-Funktionen.
  • Verlinkung korrekt im HTML-Header.
  • HTTPS verwenden.

Nach diesen Schritten sollte deine Website erfolgreich als PWA funktionieren. Ein Ergebnis kannst du unter https://shinrainet.de ansehen.

Schreibe eine Antwort