Salta al contenuto principale
@capgo/capacitor-webview-crash Autenticazione e sicurezza Open source

Crash della WebView Plugin Capacitor

Riavvia nativamente le WebView in crash e ricicla quelle di lunga durata a intervalli regolari

Installa

bun add @capgo/capacitor-webview-crash bunx cap sync
npm, pnpm o yarn
  • npm install @capgo/capacitor-webview-crash
  • pnpm add @capgo/capacitor-webview-crash
  • yarn add @capgo/capacitor-webview-crash

Guida

Come usare WebView Crash in Capacitor

Testa sul dispositivo

Scarica l'app Capgo, poi scansiona il QR code.

QR di anteprima del plugin WebView Crash code

Utilizzando @capgo/capacitor-webview-crash

Rileva i crash della WebView, riavvia nativamente le WebView bloccate e ricicla quelle attive da troppo tempo prima che la pressione della memoria causi un OOM.

Installa

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

Cosa espone questo plugin

  • Riavvio nativo dopo crash della WebView su iOS e Android.
  • Riavvio nativo della WebView a intervalli fissi per app kiosk, POS, segnaletica, scanner e dashboard attive per giorni.
  • restartWebView - Permette a JavaScript di richiedere una nuova WebView nativa senza ricaricare la pagina.
  • WebViewCrashPluginConfig - Tipi plugins.WebViewCrash opzioni in capacitor.config.ts.
  • getPendingCrashInfo - Restituisce il crash nativo o il marker di riavvio salvato, oppure null quando non c'è nulla in sospeso.
  • clearPendingCrashInfo - Cancella il marker salvato dopo che l'app ha ripristinato il suo stato.
  • simulateCrashRecovery - Crea un marker di crash fittizio per testare i flussi di recovery localmente.
  • webViewRestoredAfterCrash - Evento listener attivato quando un marker di crash è ancora pendente nel runtime ripristinato.
  • webViewRestoredAfterRestart - Evento listener attivato quando un marker di riavvio nativo è ancora pendente.

Esempio d'uso

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

Riavvio automatico nativo

Configura il comportamento di riavvio in capacitor.config.ts per garantire il funzionamento quando JavaScript non è disponibile:

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 riavvii pianificati scrivono reason: 'periodicRestart'. Usa restartIntervalMs per intervalli fissi o restartCron per una pianificazione cron a 5 campi nel fuso orario locale del dispositivo, come 0 3 * * * per un riavvio giornaliero alle 03:00. Non configurare entrambe le pianificazioni insieme: l'inizializzazione nativa genera un errore di configurazione fatale quando restartCron è impostato e restartIntervalMs è maggiore di 0. Salva lo stato critico dell'app prima di usare pianificazioni brevi.

Riavvio nativo manuale

Chiama restartWebView() quando JavaScript decide di sostituire preventivamente la WebView nativa, ad esempio dopo un workflow ad alto consumo di memoria:

await WebViewCrash.restartWebView();

Il metodo scrive reason: 'manualRestart' e chiede al code nativo di creare una nuova WebView. Android ricrea l'activity host. iOS ricostruisce la Capacitor bridge view così una nuova WKWebView viene creata invece di ricaricare la pagina corrente.

Riferimento completo

Continua da Usare @capgo/capacitor-webview-crash

Se stai usando Usare @capgo/capacitor-webview-crash per pianificare il comportamento dei media nativi e dell'interfaccia, collegalo a @capgo/capacitor-webview-crash per i dettagli di implementazione in @capgo/capacitor-webview-crash, Per iniziare per i dettagli di implementazione nella guida introduttiva, Uso di @capgo/capacitor-live-activities per la funzionalità nativa nella pagina Uso di @capgo/capacitor-live-activities, @capgo/capacitor-live-activities per i dettagli di implementazione in @capgo/capacitor-live-activities, e Uso di @capgo/capacitor-video-player per la funzionalità nativa in Usare @capgo/capacitor-video-player.

FAQ

FAQ del plugin WebView Crash

Come installo il plugin WebView Crash in un'app Capacitor?

Esegui "bun add @capgo/capacitor-webview-crash" (o "npm install @capgo/capacitor-webview-crash"), poi lancia "bunx cap sync" in modo che i progetti iOS e Android integrino il code nativo. Importalo da "@capgo/capacitor-webview-crash" nel tuo code.

@capgo/capacitor-webview-crash funziona con React, Vue e Angular?

Sì. WebView Crash è un pacchetto Capacitor, quindi funziona con qualsiasi framework web che giri dentro Capacitor, inclusi Ionic, React, Vue, Angular, Svelte e JavaScript puro.

Quale versione di Capacitor supporta @capgo/capacitor-webview-crash?

I plugin Capgo seguono la major version di Capacitor: usa la major version del plugin che corrisponde alla tua major version di Capacitor (ad esempio plugin v8 con Capacitor 8). La tabella di compatibilità nel README di GitHub elenca le versioni mantenute.

@capgo/capacitor-webview-crash è free e open source?

Sì. Il codice sorgente di code è pubblico su GitHub all'indirizzo https://github.com/Cap-go/capacitor-webview-crash/ e il pacchetto è gratuito su npm. Bug report e pull request sono i benvenuti.

Posso aggiornare code che usa WebView Crash senza passare per la revisione dell'App Store?

Installare o aggiornare il plugin modifica il code nativo, quindi serve una nuova build per lo store. Dopo, le modifiche a JavaScript, HTML e CSS che chiamano il plugin possono essere rilasciate subito con le live updates di Capgo.

Distribuisci fix per i crash di WebView senza attendere la revisione dell'app

Una volta incluso il plugin nel tuo store build, Capgo invia le modifiche a JavaScript, HTML e CSS tramite live updates in pochi minuti.

Inizia con Capgo