Zum Hauptinhalt springen
@capgo/capacitor-webview-crash Authentifizierung & Sicherheit Open Source

WebView-Absturz Capacitor Plugin

Abgestürzte WebViews nativ neu starten und laufende WebViews in einem festen Intervall recyceln

Installieren

bun add @capgo/capacitor-webview-crash bunx cap sync
npm, pnpm oder yarn
  • npm install @capgo/capacitor-webview-crash
  • pnpm add @capgo/capacitor-webview-crash
  • yarn add @capgo/capacitor-webview-crash

Anleitung

WebView Crash in Capacitor nutzen

Auf dem Gerät testen

Lade die Capgo App herunter und scanne den QR code.

WebView Crash Plugin Vorschau-QR code

@capgo/capacitor-webview-crash verwenden

Erkenne wiederhergestellte WebView-Crashes, starte abgestürzte WebViews nativ neu und recycelt lang laufende WebViews in festen Intervallen, bevor Memory Pressure zu einem OOM führt.

Installieren

npm install @capgo/capacitor-webview-crash
npx cap sync

Was dieses Plugin bereitstellt

  • Nativer Neustart nach WebView-Crashes auf iOS und Android.
  • Nativer WebView-Neustart in festen Intervallen für Kiosk-, POS-, Signage-, Scanner- und Dashboard-Apps, die über Tage laufen.
  • restartWebView - Ermöglicht JavaScript die Anforderung einer frischen nativen WebView ohne Page Reload.
  • WebViewCrashPluginConfig - Typen plugins.WebViewCrash Optionen in capacitor.config.ts.
  • getPendingCrashInfo - Gibt den gespeicherten Native-Crash- oder Neustart-Marker zurück, oder null wenn nichts aussteht.
  • clearPendingCrashInfo - Löscht den gespeicherten Marker, nachdem die App ihren Zustand wiederhergestellt hat.
  • simulateCrashRecovery - Erstellt einen Fake-Crash-Marker, um Recovery-Flows lokal zu testen.
  • webViewRestoredAfterCrash - Listener-Event, das ausgelöst wird, wenn ein Crash-Marker in der wiederhergestellten Runtime noch aussteht.
  • webViewRestoredAfterRestart - Listener-Event, das ausgelöst wird, wenn ein Native-Restart-Marker noch aussteht.

Anwendungsbeispiel

import { WebViewCrash } from '@capgo/capacitor-webview-crash';

await WebViewCrash.addListener('webViewRestoredAfterCrash', async (info) => {
  console.log('Recovered after a WebView crash', info);
  await WebViewCrash.clearPendingCrashInfo();
});

await WebViewCrash.addListener('webViewRestoredAfterRestart', async (info) => {
  console.log('Recovered after a native WebView restart', info);
  await WebViewCrash.clearPendingCrashInfo();
});

const pending = await WebViewCrash.getPendingCrashInfo();
// Note: the listener callback may have already cleared the pending marker.
if (pending.value) {
  console.log('Pending crash or restart marker', pending.value);
}

Automatischer Native Restart

Konfiguriere das Neustartverhalten in capacitor.config.ts , damit es weiterläuft, wenn JavaScript nicht verfügbar ist:

import type { CapacitorConfig } from '@capacitor/cli';
import type { WebViewCrashPluginConfig } from '@capgo/capacitor-webview-crash';

const webViewCrash: WebViewCrashPluginConfig = {
  restartOnCrash: true,
  restartCron: '0 3 * * *',
  restartAfterCrashDelayMs: 0,
};

const config: CapacitorConfig = {
  plugins: {
    WebViewCrash: webViewCrash,
  },
};

export default config;

Geplante Neustarts werden geschrieben reason: 'periodicRestart'. Nutze restartIntervalMs für feste Intervalle oder restartCron für einen 5-Felder-Cron-Zeitplan in der lokalen Zeitzone des Geräts, wie zum Beispiel 0 3 * * * für einen täglichen Neustart um 03:00 Uhr. Konfiguriere nicht beide Zeitpläne gleichzeitig: Die native Initialisierung wirft einen fatalen Konfigurationsfehler, wenn restartCron gesetzt ist und restartIntervalMs größer als ist 0. Speichere kritische App-Zustände, bevor du kurze Intervalle nutzt.

Manueller Native Restart

Rufe restartWebView() wenn JavaScript entscheidet, dass der native WebView proaktiv ersetzt werden sollte, zum Beispiel nach einem speicherintensiven Workflow:

await WebViewCrash.restartWebView();

Die Methode schreibt reason: 'manualRestart' und fordert das native code auf, eine neue WebView zu erstellen. Android erstellt die Host-Activity neu. iOS baut die Capacitor Bridge-View neu auf, damit eine neue WKWebView erstellt wird, anstatt die aktuelle Seite neu zu laden.

Vollständige Referenz

Weiterlesen unter Using @capgo/capacitor-webview-crash

Wenn du es nutzt @capgo/capacitor-webview-crash verwenden , um natives Media- und Interface-Verhalten zu planen, verbinde es mit @capgo/capacitor-webview-crash für die Implementierungsdetails in @capgo/capacitor-webview-crash, Erste Schritte für die Implementierungsdetails in Erste Schritte, @capgo/capacitor-live-activities verwenden für die native Funktion in „@capgo/capacitor-live-activities verwenden“, @capgo/capacitor-live-activities für die Implementierungsdetails in @capgo/capacitor-live-activities und Verwendung von @capgo/capacitor-video-player für die native Funktionalität in „Verwendung von @capgo/capacitor-video-player.“

FAQ

WebView Crash Plugin FAQ

Wie installiere ich das WebView Crash Plugin in einer Capacitor App?

Führe "bun add @capgo/capacitor-webview-crash" (oder "npm install @capgo/capacitor-webview-crash") aus und danach "bunx cap sync", damit die iOS- und Android-Projekte das native code übernehmen. Importiere es in deiner App code aus "@capgo/capacitor-webview-crash".

Funktioniert @capgo/capacitor-webview-crash mit React, Vue und Angular?

Ja. WebView Crash ist ein Capacitor Package und funktioniert daher mit jedem Web-Framework, das in Capacitor läuft, einschließlich Ionic, React, Vue, Angular, Svelte und reinem JavaScript.

Welche Capacitor Version wird von @capgo/capacitor-webview-crash unterstützt?

Capgo Plugins folgen der Major-Version von Capacitor: Nutze die Plugin-Major-Version, die zu deiner Capacitor Major-Version passt (z. B. Plugin v8 bei Capacitor 8). Die Kompatibilitätstabelle im GitHub README listet die gepflegten Versionen auf.

Ist @capgo/capacitor-webview-crash kostenlos und Open Source?

Ja. Der code Quellcode ist auf GitHub unter https://github.com/Cap-go/capacitor-webview-crash/ öffentlich einsehbar und das Paket kann kostenlos über npm installiert werden. Bug-Reports und Pull Requests sind willkommen.

Kann ich code mit WebView Crash aktualisieren, ohne ein App Store Review abzuwarten?

Die Installation oder ein Upgrade des Plugins ändert den nativen code, weshalb ein neuer Store-Build nötig ist. Danach können JavaScript-, HTML- und CSS-Änderungen, die das Plugin aufrufen, sofort per Capgo Live Updates ausgeliefert werden.

WebView-Crash-Fixes via Live Update ausrollen, ohne auf den App-Review zu warten

Sobald das Plugin in deinem Store-Build ist, bringt Capgo mit Live-Updates deine JavaScript-, HTML- und CSS-Änderungen in Minuten zu den Nutzern.

Starte mit Capgo