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

Webview-Crash

Neustart der WebViews, die abstürzen, und Recycling der WebViews, die lange Zeit laufen, auf einem festgelegten Intervall

Richtlinie

Tutorial zum WebView-Crash

Auf Gerät testen

Laden Sie die Capgo-App herunter, dann scannen Sie die QR-Code code.

WebView Crash Plugin Vorschau QR code

Mit @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 Speicherdurchsatz in einen OOM verwandelt.

Installieren

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

Was diese Plugin-Exposen 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 - Gibt das gespeicherte native Crash- oder Neustart-Marker zurück, oder null When nichts ist anstehend.
  • clearPendingCrashInfo - Löschet den gespeicherten Marker nachdem sich Ihre App ihren Zustand wiederhergestellt hat.
  • simulateCrashRecovery - Erstellt einen fiktiven Crash-Marker, um Recovery-Flows lokal testen zu können.
  • webViewRestoredAfterCrash - Listener-Event wird ausgelöst, wenn ein Crash-Marker noch anstehend ist in der wiederhergestellten Runtime.
  • webViewRestoredAfterRestart - Listener-Event wird ausgelöst, wenn ein Native Restart-Marker noch anstehend ist.

Beispiel zur 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 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 Wiederstarts schreiben reason: 'periodicRestart'. Verwenden Sie restartIntervalMs zurückgesetzt für festgelegte Intervalle oder restartCron für ein 5-Felder-Cron-Schema in der Gerätezeitzone, wie zum Beispiel 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 festgelegt ist und restartIntervalMs größer als 0ist. Persistieren Sie kritische Anwendungsdaten, bevor Sie kurze Schemas verwenden.

Manueller Native Neustart

Aufrufen Sie restartWebView() wenn JavaScript entscheidet, dass die native WebView vorab ersetzt werden soll, zum Beispiel nach einem memory-intensiven Workflow:

await WebViewCrash.restartWebView();

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

Vollständige Referenz

Weitermachen von Using @capgo/capacitor-webview-crash

Wenn Sie Using verwenden Using @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, Einstieg für die Implementierungsdetails in Einstieg, Using @capgo/capacitor-live-activities für die native Fähigkeit in Using @capgo/capacitor-live-aktivitäten @capgo/capacitor-live-aktivitäten für die Implementierungsdetail in @capgo/capacitor-live-aktivitäten, und Using @capgo/capacitor-video-player für die native Fähigkeit in Using @capgo/capacitor-video-player.