Vai alla sezione principale
Torna ai plugin
@capgo/capacitor-crash-webview
Tutorial
da github.com/Cap-go

Crash del WebView

Riavvia i WebViews bloccati nativamente e ricicla i WebViews di lunga durata con un intervallo fissato

Guida

Tutoriale su Crash WebView

Utilizzo di @capgo/capacitor-webview-crash

Detect recovered WebView crashes, restart dead WebViews natively, and recycle long-running WebViews on a fixed interval before memory pressure turns into an OOM.

Installazione

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

Cos'è che questo Plugin Espone

  • Riavvio nativo dopo crash WebView su iOS e Android.
  • Riavvio del WebView nativo a intervalli fissi per applicazioni kiosk, POS, segnalizzazione, scanner e dashboard che funzionano per giorni.
  • restartWebView - Lascia che JavaScript richieda un WebView nativo fresco senza fare un reload della pagina.
  • WebViewCrashPluginConfig - Tipi plugins.WebViewCrash opzioni in capacitor.config.ts.
  • getPendingCrashInfo - Restituisce il marker di crash o riavvio nativo memorizzato, o null When non è nulla in sospeso.
  • clearPendingCrashInfo - Cancella il marker memorizzato dopo che l'app ha ripristinato lo stato.
  • simulateCrashRecovery - Crea un marker di crash falso per poter testare i flussi di recupero localmente.
  • webViewRestoredAfterCrash - Evento ascoltato quando un marker di crash è ancora in sospeso nel runtime ripristinato.
  • webViewRestoredAfterRestart - Evento ascoltato quando qualsiasi marker di restart nativo è ancora in sospeso.

Esempio di utilizzo

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

Restart Auto Nativo

Configura il comportamento di restart in capacitor.config.ts così continua a funzionare quando non è disponibile JavaScript:

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;

Le restart programmate scrivono reason: 'periodicRestart'. Utilizza restartIntervalMs per intervalli fissi o restartCron per un orario di pianificazione cron di 5 campi nel fuso orario locale del dispositivo, ad esempio 0 3 * * * per un riavvio quotidiano alle 03:00. Non configurare entrambi gli orari contemporaneamente: l'inizializzazione nativa lancia un errore di configurazione fatale quando restartCron è impostato e restartIntervalMs è maggiore di 0. Conserva lo stato critico dell'applicazione prima di utilizzare gli orari brevi.

Riavvio Nativo Manuale

Chiamare restartWebView() quando JavaScript decide che il WebView nativo debba essere sostituito proattivamente, ad esempio dopo un flusso di lavoro pesante in termini di memoria:

await WebViewCrash.restartWebView();

Il metodo scrive reason: 'manualRestart' e chiede al nativo code di creare un WebView fresco. Android ricrea l'attività host. iOS ricostruisce il ponte di visualizzazione Capacitor in modo che una nuova WKWebView venga creata al posto di caricare la pagina corrente.

Riferimento Completo

Continua con l'utilizzo di @capgo/capacitor-webview-crash

Se stai utilizzando Utilizzando @capgo/capacitor-webview-crash per pianificare il comportamento nativo dei media e dell'interfaccia, connettilo con @capgo/capacitor-webview-crash per i dettagli di implementazione in @capgo/capacitor-webview-crash, Avvio rapido per i dettagli di implementazione in Avvio rapido, Utilizzando @capgo/capacitor-live-activities per la capacità nativa in Utilizzare @capgo/capacitor-live-attività, @capgo/capacitor-live-attività per il dettaglio di implementazione in @capgo/capacitor-live-attività, e Utilizzare @capgo/capacitor-video-player per la capacità nativa in Utilizzare @capgo/capacitor-video-player.