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

WebView Crash

Neustart von abgestürzten WebViews auf nativer Ebene und Recycling von WebViews, die über einen festen Zeitraum laufen

Richtlinie

Tutorial zu WebView-Crash

Mit @capgo/capacitor-webview-crash

Detektieren Sie wiederhergestellte WebView-Crashes, starten Sie tote WebViews auf nativer Ebene neu und recyclen Sie WebViews, die über einen festen Zeitraum laufen, bevor sich die Speicherdurchsatz in einen OOM verwandelt

Installieren

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

Was diese Erweiterung bereitstellt

  • Natives Neustart nach WebView-Crashes auf iOS und Android.
  • Festintervallerter Neustart des nativen WebViews für Kiosk-, POS-, Anzeigegeräte-, 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 Neustartmarker zurück, oder null wenn nichts im Gange ist.
  • clearPendingCrashInfo - Löschet den gespeicherten Marker nachdem Ihre App ihren Zustand wiederhergestellt hat.
  • simulateCrashRecovery - Erstellt einen fiktiven Crashmarker, damit Recovery-Flows lokal getestet werden können.
  • webViewRestoredAfterCrash - Listener-Event wird ausgelöst, wenn ein Crashmarker noch im Gangan ist in der wiederhergestellten Runtime.
  • webViewRestoredAfterRestart - Listener Ereignis ausgelöst, wenn ein beliebiges Native-Restart-Marker noch ausstehend ist.

Beispiel für die 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 Neustartverhalten 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 ein 5-Felder-Cron-Schema in der Gerätezeitzone, wie z.B. 0 3 * * * für einen täglichen Neustart um 03:00 Uhr. Konfigurieren Sie nicht beide Schemas gleichzeitig: Die native Initialisierung wirft einen fatalen Konfigurationsfehler, wenn restartCron festgelegt ist und restartIntervalMs größer als 0. Persist kritische App-Zustand vor der Verwendung kurzer Schedules.

Manueller Native Neustart

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

await WebViewCrash.restartWebView();

Die Methode schreibt reason: 'manualRestart' und fragt die native code an, um eine frische WebView zu erstellen. Android reaktiviert die Host-Aktivität. iOS rekonstruiert die Capacitor-Brückeansicht, sodass stattdessen eine neue WKWebView erstellt wird, anstatt die aktuelle Seite neu zu laden.

Vollständige Referenz

Weitermachen von Using @capgo/capacitor-webview-crash

If Sie native Medien und Schnittstellenverhalten planen, verbinden Sie es mit Verwendung von @capgo/capacitor-webview-crash um native Medien und Schnittstellenverhalten zu planen, verbinden Sie es mit @capgo/capacitor-webview-crash Um Anfänger zu unterstützen, finden Sie im Kapitel "@capgo/capacitor-webview-crash" Anfänger Um Anfänger zu unterstützen, finden Sie im Kapitel "Getting Started", Verwendung von @capgo/capacitor-live-activities Verwendung von @capgo/capacitor-live-activities @capgo/capacitor-live-activities Verwendung von @capgo/capacitor-video-player Verwendung von @capgo/capacitor-video-player für die native Fähigkeit in @capgo/capacitor-Video-Player.