Zum Inhalt springen

@capgo/capacitor-webview-crash

Native WebView-Fehlertreiber, manueller Neustart und geplante WebView-Vergabe für lang laufende Capacitor-Anwendungen.

Dieses Plugin legt bei einem Tod oder Recycling des vorherigen Capacitor WebView-Prozesses einen nativen Marker ab und macht diesen Marker dann nach dem App-Wiederherstellen für das nächste JavaScript-Runtime verfügbar. Es kann auch den WebView von native code nach einem Crash, auf einem festen Intervall, auf einem Cron-Schema oder wenn JavaScript explizit anfragt, neu starten. restartWebView()Dies hilft Kiosk-, POS-, Dashboard-, Scanner- und Signage-Apps, sich vor einer Speicheranreicherung während langen Sitzungen zu schützen.

  • Native Crash-Neustart - Der WebView wird von iOS oder Android neu gestartet, wenn der Renderer-Prozess stirbt.
  • Geplante Neustart - Recycelt lange laufende WebViews auf einem nativen Timer mit restartIntervalMs oder einem Uhrzeigerschalter restartCron.
  • Manueller nativer Neustart - Lässt JavaScript einen frischen nativen WebView mit restartWebView() ohne eine Seite neu zu laden.
  • Typische Capacitor-Konfiguration - Exponiert WebViewCrashPluginConfig für plugins.WebViewCrash in capacitor.config.ts.
  • getPendingCrashInfo - Gibt die gespeicherte native Crash- oder Neustartmarke zurück, oder null wenn nichts im Gange ist.
  • clearPendingCrashInfo - Löschet die gespeicherte Marke nachdem Ihre App ihren Zustand wiederhergestellt hat.
  • simulateCrashRecovery - Erstellt eine fiktive Crashmarke, damit Recovery-Flows lokal getestet werden können.
  • addListener - Auslöst webViewRestoredAfterCrash für Crashmarker und webViewRestoredAfterRestart für jeden native Restartmarker.
MethodeBeschreibung
getPendingCrashInfoGibt den gespeicherten native Crash- oder Restartmarker zurück, oder null wenn nichts ansteht.
clearPendingCrashInfoLöscht den gespeicherten Marker nachdem sich Ihre App wieder in ihren Zustand zurückgesetzt hat.
simulateCrashRecoveryErstellt einen fiktiven Crashmarker, damit Recovery-Flows lokal getestet werden können.
restartWebViewSchreibt reason: 'manualRestart' und fragt native code an, um eine frische WebView zu erstellen.
addListenerFeuern webViewRestoredAfterCrash oder webViewRestoredAfterRestart wenn ein Hörer anhängt und ein passender Marker noch ausstehend ist.
removeAllListenersEntfernt alle Plugin-Hörer.

Das Plugin ergänzt Capacitor’s PluginsConfig mit einem WebViewCrash typisierten

export interface WebViewCrashPluginConfig {
restartOnCrash?: boolean;
restartIntervalMs?: number;
restartCron?: string;
restartAfterCrashDelayMs?: number;
}

Zwischenablage kopieren

Hinweise zu den Konfigurationen
  • Dieses Plugin erkennt eine Wiederherstellung nach einem WebView-Crash. Es verhindert jedoch nicht den zugrunde liegenden Crash.
  • Das wiederhergestellte JavaScript- Runtime ist neu, daher ist jeder in-Memory-Zustand vom vorherigen WebView bereits weg, wenn dieser API ausgelöst wird.
  • Geplante Neustarts schreiben reason: 'periodicRestart'Manuelle Neustarts schreiben reason: 'manualRestart'Speichere ungelesene Daten, bevor du kurze Neustarts, Cron-Aufträge oder restartWebView().
  • restartCron verwendest, der 5-Felder-Cron-Syntax in der Geräte-Lokalzeitzone, zum Beispiel 0 3 * * * für einen täglichen Neustart um 03:00 Uhr. Konfiguriere nicht beide Schedules gleichzeitig: Die native Initialisierung wirft einen fatalen Konfigurationsfehler, wenn restartCron eingesetzt ist und restartIntervalMs größer als 0.
  • Auf Android sind zusätzliche Felder wie didCrash und rendererPriorityAtExit verfügbar.
  • Auf iOS wird das Plugin aufgezeichnet appState wenn der beendete WebView-Prozess beobachtet wird. Manuelle und geplante Neustarts bauen die Capacitor-Brückensicht so um, dass ein neuer WKWebView erzeugt wird.

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

Wenn Sie @capgo/capacitor-webview-crash um native Medien- und Schnittstellenverhalten zu planen, mit ihm zu verbinden Mit @capgo/capacitor-webview-crash für die native Fähigkeit in Mit @capgo/capacitor-webview-crash, Mit @capgo/capacitor-live-activities für die native Fähigkeit in Mit @capgo/capacitor-live-activities, @capgo/capacitor-live-activities für die Implementierungsdetails in @capgo/capacitor-live-activities, Mit @capgo/capacitor-video-player für die native Fähigkeit in Mit @capgo/capacitor-video-player, und @capgo/capacitor-video-player für die Implementierungsdetails in @capgo/capacitor-video-player.