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

Webview-Crash

Neustart der Webviews nach einem Crash und Recycling von Webviews nach einer festen Zeit

Anleitung

Tutorial zum WebView-Crash

Gerät testen

Herunterladen Sie die Capgo-App und scannen Sie die QR-code.

Vorschau-Link für die QR-Code-Anzeige des WebView-Crash-Plugins code

Verwendung von @capgo/capacitor-webview-crash

Detektieren Sie wiederhergestellte WebView-Crashes, starten Sie tote WebViews nativ neu und recyclen Sie lange laufende WebViews auf einem festen Intervall, bevor sich die Speicherdurchsatzdruck in einen OOM verwandelt.

Installieren

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

Was dieses Plugin offenlegt

  • Natives Neustarten nach WebView-Crashes auf iOS und Android.
  • Festintervall-natives Neustarten von WebViews für kiosk-, POS-, Signage-, Scanner- und Dashboard-Anwendungen, die Tage lang laufen.
  • restartWebView - Lassen Sie JavaScript ein frisches natives WebView anfordern, ohne eine Seite neu zu laden.
  • WebViewCrashPluginConfig - Typen plugins.WebViewCrash Optionen in capacitor.config.ts.
  • getPendingCrashInfo - Gibt die gespeicherte native Crash- oder Neustartmarke zurück oder null Wenn nichts mehr im Gange ist.
  • clearPendingCrashInfo - Löscht den gespeicherten Marker, nachdem sich Ihre App wieder in ihren Zustand zurückgesetzt hat.
  • simulateCrashRecovery - Erstellt einen fiktiven Crash-Marker, damit Recovery-Flows lokal getestet werden können.
  • webViewRestoredAfterCrash - Listener-Event wird ausgelöst, wenn ein Crash-Marker noch im Wartestand ist, nachdem sich die Runtime wiederhergestellt hat.
  • webViewRestoredAfterRestart - Listener-Event wird ausgelöst, wenn ein beliebiger Native-Restart-Marker noch im Wartestand 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 Neustarten 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 schreiben reason: 'periodicRestart'. Verwenden Sie restartIntervalMs für festgelegte Intervalle oder restartCron für eine 5-Felder-Cron-Auftragsplanung im Geräte-Lokalzeitzone, wie z.B. 0 3 * * * für einen täglichen Neustart um 03:00 Uhr. Konfigurieren Sie beide Schedules nicht gleichzeitig: Die native Initialisierung wirft einen fatalen Konfigurationsfehler, wenn restartCron eingesetzt ist und restartIntervalMs größer als 0ist. Persistieren Sie kritische Anwendungsstatus vor der Verwendung kurzer Schedules.

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, um ein frisches WebView zu erstellen. Android reaktivierte die Host Activity. iOS rekonstruiert die Capacitor Bridge View, sodass stattdessen 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, 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.