Zum Hauptinhalt springen
Zurück zu plugins
@capgo/capacitor-webview-crash
Tutorial
@capgo/capacitor-webview-crash

WebView Crash

Neustarten der WebViews, die abstürzen, und Recycling der WebViews, die lange Zeit in Betrieb sind, auf einem festen Intervall

Führung

Anleitung zum WebView-Crash

Gerät auf Testen

Capgo-App herunterladen, dann die QR-Code code scannen.

WebView Crash Plugin Vorschau QR code

Mit @capgo/capacitor-webview-crash

Durch die Erkennung von wiederhergestellten WebView-Crashes, das nativ Neustarten toter WebViews und das Recycling von WebViews nach einer festen Zeit vor dem Umstieg in einen OOM.

Installieren

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

Was dieses Plugin bereitstellt

  • Natives Neustarten nach WebView-Crashes auf iOS und Android.
  • Festzeitintervall-basiertes nativ Neustarten von WebViews für kiosk-, POS-, Signage-, Scanner- und Dashboard-Anwendungen, die Tage laufen.
  • restartWebView - Lassen Sie JavaScript ein frisches natives WebView ohne Seitenaufruf anfordern.
  • WebViewCrashPluginConfig - Typen plugins.WebViewCrash Optionen in capacitor.config.ts.
  • getPendingCrashInfo - Gibt die gespeicherte native Crash- oder Neustartenmarke zurück, oder null wenn nichts mehr ausstehend ist.
  • clearPendingCrashInfo - Löscht den gespeicherten Marker nachdem sich die App wieder in ihren Zustand zurückgesetzt hat.
  • simulateCrashRecovery - Erstellt einen fiktiven Crash-Marker, um lokale Recovery-Flows testen zu können.
  • webViewRestoredAfterCrash - Listener-Event wird ausgelöst, wenn ein Crash-Marker noch ausstehend ist in der wiederhergestellten Runtime.
  • webViewRestoredAfterRestart - Listener-Event wird ausgelöst, wenn ein beliebiger Native-Restart-Marker noch ausstehend ist.

Beispielhafte Verwendung

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);
}

Native Auto Restart

Konfigurieren Sie das Wiederherstellungsverhalten in capacitor.config.ts damit es weiterhin funktioniert, 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 Wiederherstellungen schreiben reason: 'periodicRestart'. Verwenden Sie restartIntervalMs für festgelegte Intervalle oder restartCron für ein 5-Felder-Cron-Schema im Gerätezeitzone, wie 0 3 * * * für einen täglichen Neustart um 03:00 Uhr. Konfigurieren Sie beide Schemas nicht gleichzeitig: Die native Initialisierung wirft einen fatalen Konfigurationsfehler, wenn restartCron eingesetzt ist und restartIntervalMs größer ist als 0. Persistieren Sie kritische Anwendungsstatus, bevor Sie kurze Schemas verwenden.

Manueller Native Neustart

aufrufen restartWebView() wenn JavaScript entscheidet, dass der native WebView vorzeitig ersetzt werden soll, zum Beispiel nach einem memory-intensiven Workflow:

await WebViewCrash.restartWebView();

Die Methode schreibt reason: 'manualRestart' und fragt den native code an, ein frisches WebView zu erstellen. Android reaktivierte die Hostaktivität. iOS rekonstruiert die Capacitor Bridgeansicht, sodass ein neues WKWebView erzeugt wird, anstatt die aktuelle Seite neu zu laden.

Vollständige Referenz

Weiter mit der Verwendung von @capgo/capacitor-webview-crash

Wenn Sie die Verwendung von Die Verwendung von @capgo/capacitor-webview-crash um native Medien und Schnittstellenverhalten zu planen und zu verbinden, verbinden Sie es mit @capgo/capacitor-webview-crash für die Implementierungsdetails in @capgo/capacitor-webview-crash Einführung für die Implementierungsdetails in Einführung Die Verwendung von @capgo/capacitor-live-activities für die native Fähigkeit in Verwendung von @capgo/capacitor-live-aktivitäten, @capgo/capacitor-live-aktivitäten für die Implementierungsdetail in @capgo/capacitor-live-aktivitäten und Verwendung von @capgo/capacitor-video-player für die native Fähigkeit in Verwendung von @capgo/capacitor-video-player.