Vai direttamente al contenuto principale
Indietro ai plugin
@capgo/capacitor-webview-crash
Istruzioni
@capgo/capacitor-webview-crash

Crash del WebView

Riavvia i WebViews bloccati nativamente e ricicla i WebViews di lunga durata a intervalli fissi

Guida

Tutorial su WebView Crash

Esegui il test sul dispositivo

Scarica l'app Capgo, poi scansione il codice QR code.

WebView Crash plugin preview QR code

Utilizzando @capgo/capacitor-webview-crash

Detecta gli schianti del WebView, riavvia i WebViews morti nativamente e ricicla i WebViews di lunga durata in un intervallo fissato prima che la pressione di memoria si trasformi in un OOM.

Installa

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

Cos'è che questo Plugin Espone

  • Riavvio nativo dopo gli schianti del WebView su iOS e Android.
  • Riavvio del WebView nativo a intervalli fissi per gli app di kiosk, POS, segnale, scanner e dashboard che funzionano per giorni.
  • restartWebView - Consente ai JavaScript di richiedere un WebView nativo fresco senza fare un reload della pagina.
  • WebViewCrashPluginConfig - Tipi plugins.WebViewCrash opzioni in capacitor.config.ts.
  • getPendingCrashInfo - Restituisce il marker di schianto o riavvio nativo memorizzato, o null quando non c'è nulla in sospeso.
  • clearPendingCrashInfo - Cancella il marker memorizzato dopo che l'applicazione ha ripristinato lo stato.
  • simulateCrashRecovery - Crea un marker di crash falso per poter testare localmente i flussi di recupero.
  • 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);
}

Ripristino automatico nativo

Configura il comportamento di ripristino in capacitor.config.ts in modo che continui 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;

I ripristini programmati 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 orari brevi.

Riavvio Nativo Manuale

Chiamare restartWebView() contexto: frammento di testo HTML da una stringa Capgo UI più lunga (chiave genitoriale `appflow_migration_step2`). Pagina/area: Appflow comparison / migrazione marketing copy. Ruolo: Copia di sito di frase. Visualizzato in: pagina ionic-appflow.astro. Preservare i termini di prodotto/marca e sviluppatore Capgo esattamente. Chiave di messaggio `appflow_migration_step2` (Appflow Migration Step2).

await WebViewCrash.restartWebView();

quando JavaScript decide che il WebView nativo debba essere sostituito proattivamente, ad esempio dopo un flusso di lavoro pesante in termini di memoria: 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 e chiede al nativo __CAPGO_KEEP_0__ di creare un WebView fresco. L'Android ricrea l'attività host. L'iOS ricostruisce il ponte di visualizzazione __CAPGO_KEEP_1__ così che una nuova

venga creata al posto di caricare nuovamente la pagina corrente.

Continua da Utilizza @capgo/capacitor-webview-crash

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