Zum Inhalt springen

@capgo/capacitor-webview-crash

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

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

Starte mit getPendingCrashInfo() und den anderen unten aufgeführten Core-Methoden.

PlattformSupportNotizen
iOSJaNative
AndroidJaNative
WebTeilweiseErste Schritte ansehen
  • Native Crash-Neustart – Startet die WebView unter iOS oder Android neu, wenn der Renderer-Prozess abstürzt.
  • Geplanter Neustart – Recycelt lang laufende WebViews über einen nativen Timer mittels restartIntervalMs oder einer Uhrzeit restartCron.
  • Manueller nativer Neustart – Ermöglicht es JavaScript, eine frische native WebView anzufordern, restartWebView() ohne einen Page Reload durchzuführen.
  • Typisierte Capacitor Konfiguration – Bietet WebViewCrashPluginConfig für plugins.WebViewCrash 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 simulierten Crash-Marker, um Recovery-Flows lokal zu testen.
  • addListener - Löst webViewRestoredAfterCrash für Crash-Marker und webViewRestoredAfterRestart für jeden Native-Neustart-Marker aus.
MethodeBeschreibung
getPendingCrashInfoGibt den gespeicherten Native-Crash oder Restart-Marker zurück, oder null wenn nichts ausstehend ist.
clearPendingCrashInfoLöscht den gespeicherten Marker, nachdem die App ihren Zustand wiederhergestellt hat.
simulateCrashRecoveryErstellt einen simulierten Crash-Marker, um Recovery-Flows lokal zu testen.
restartWebViewSchreibt reason: 'manualRestart' und weist das native code an, ein neues WebView zu erstellen.
addListenerLöst webViewRestoredAfterCrash oder webViewRestoredAfterRestart aus, wenn ein Listener angehängt wird und ein passender Marker noch aussteht.
removeAllListenersEntfernt alle Plugin-Listener.

Das Plugin erweitert Capacitor um einen PluginsConfig typisierten WebViewCrash Konfigurationseintrag:

export interface WebViewCrashPluginConfig {
restartOnCrash?: boolean;
restartIntervalMs?: number;
restartCron?: string;
restartAfterCrashDelayMs?: number;
}
  • Dieses Plugin erkennt die Wiederherstellung nach einem WebView-Crash. Es verhindert den zugrunde liegenden Crash nicht.
  • Die wiederhergestellte JavaScript-Runtime ist neu. Daher ist jeder In-Memory-Status des vorherigen WebViews bereits verloren, wenn dieses API ausgelöst wird.
  • Geplante Restarts schreiben reason: 'periodicRestart'; manuelle Restarts schreiben reason: 'manualRestart'. Speichere ungesicherten State, bevor du kurze Restart-Intervalle, Cron-Schedules oder restartWebView().
  • restartCron verwendet die 5-Felder-Cron-Syntax in der lokalen Zeitzone des Geräts, 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 Config-Error, wenn restartCron gesetzt ist und restartIntervalMs größer als ist 0.
  • Auf Android können zusätzliche Felder wie didCrash und rendererPriorityAtExit verfügbar sein.
  • Auf iOS protokolliert das Plugin appState wenn der beendete WebView-Prozess beobachtet wird. Manuelle und geplante Neustarts bauen die Capacitor Bridge-View neu auf, sodass eine neue WKWebView erstellt wird.

Diese Referenz wird synchronisiert von src/definitions.ts in capacitor-webview-crash.

Wenn du es nutzt @capgo/capacitor-webview-crash , um natives Media- und Interface-Verhalten zu planen, verbinde es mit Verwendung von @capgo/capacitor-webview-crash für die native Funktion in Verwendung von @capgo/capacitor-webview-crash, @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, Verwendung von @capgo/capacitor-video-player für die native Funktion in „@capgo/capacitor-video-player verwenden“, und @capgo/capacitor-video-player für das Implementierungsdetail in @capgo/capacitor-video-player.