Zum Hauptinhalt springen
Zurück zu Plugins
@capgo/capacitor-webview-crash
Anleitung
@capgo/capacitor-webview-crash

Webview-Crash

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

Anleitung

Tutorial zum WebView-Crash

Testen auf Gerät

Herunterladen der Capgo-App, dann den QR-Code code scannen.

WebView Crash Plugin Vorschau QR 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 Speicherdynamik in einen OOM verwandelt.

Installieren

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

Was diese Plugin-Exposition enthält

  • Natives Neustart nach WebView-Crashes auf iOS und Android.
  • Festintervalliges natives WebView-Neustart für Kiosk-, POS-, Signage-, Scanner- und Dashboard-Anwendungen, die Tage laufen.
  • restartWebView - Lassen Sie JavaScript einen frischen nativen WebView ohne Seitenaufruf anfordern.
  • WebViewCrashPluginConfig Typen plugins.WebViewCrash Optionen in capacitor.config.ts.
  • getPendingCrashInfo Rückgabewerte des gespeicherten nativen Crash- oder Neustart-Markers, oder null wenn nichts mehr ausstehend 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 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 eine 5-Felder-Cron-Auftragsplanung im Gerätezeitzone, wie 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 festgelegt ist und restartIntervalMs größer als 0ist. Persistieren Sie kritische App-Zustände, bevor Sie kurze Schedules verwenden.

Manueller Native Neustart

aufrufen restartWebView() context: HTML-Textfragment aus einer längeren Capgo-UI-Zeichenfolge (Elternschlüssel `appflow_migration_step2`). Seite/Bereich: Appflow-Vergleich / Migration-Marketingtext. Rolle: Website-Zeichenfolge. Gesehen in: Seite ionic-appflow.astro. Erhalten Sie Capgo-Produkt-/Marken- und Entwicklertrems genau. Nachrichtenschlüssel `appflow_migration_step2` (Appflow-Migration-Schritt2).

await WebViewCrash.restartWebView();

wenn JavaScript entscheidet, dass der native WebView vorab ersetzt werden soll, zum Beispiel nach einem memory-intensiven Workflow: reason: 'manualRestart' and asks native code to create a fresh WebView. Android recreates the host activity. iOS rebuilds the Capacitor bridge view so a new WKWebView und fragt den native __CAPGO_KEEP_0__ an, um ein frisches WebView zu erstellen. Android reaktivierte die Hostaktivität. iOS rekonstruiert die __CAPGO_KEEP_1__ Bridgeansicht, sodass ein neues

erzeugt wird, anstatt die aktuelle Seite neu zu laden.

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.