Vai al contenuto

@capgo/capacitor-webview-crash

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

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

Inizia con getPendingCrashInfo() e gli altri metodi principali elencati qui sotto.

PiattaformaSupportoNote
iOSSìNativo
AndroidSìNativo
WebParzialeVedi come iniziare
  • Riavvio crash nativo - Riavvia la WebView da iOS o Android quando il processo di rendering termina.
  • Riavvio pianificato - Ricicla le WebView attive da molto tempo tramite un timer nativo o restartIntervalMs un orologio di sistema restartCron.
  • Riavvio nativo manuale - Permette a JavaScript di richiedere una nuova WebView nativa restartWebView() senza ricaricare la pagina.
  • Configurazione Capacitor tipizzata - Espone WebViewCrashPluginConfig per plugins.WebViewCrash in capacitor.config.ts.
  • getPendingCrashInfo - Restituisce il marker di crash nativo o di riavvio salvato, oppure null quando non ci sono elementi 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.
  • addListener - Esegue webViewRestoredAfterCrash per i marker di crash e webViewRestoredAfterRestart per qualsiasi marker di riavvio nativo.
MetodoDescrizione
getPendingCrashInfoRestituisce il marker salvato di crash nativo o riavvio, oppure null quando non c'è nulla in sospeso.
clearPendingCrashInfoCancella il marker salvato dopo che l'app ha ripristinato il suo stato.
simulateCrashRecoveryCrea un marker di crash fittizio per testare i flussi di recovery localmente.
restartWebViewScrive reason: 'manualRestart' e chiede a code nativo di creare una nuova WebView.
addListenerEmette webViewRestoredAfterCrash o webViewRestoredAfterRestart quando un listener si collega e un marker corrispondente è ancora in sospeso.
removeAllListenersRimuove tutti i listener del plugin.

Il plugin aggiunge a Capacitor una PluginsConfig voce di configurazione WebViewCrash tipizzata:

export interface WebViewCrashPluginConfig {
restartOnCrash?: boolean;
restartIntervalMs?: number;
restartCron?: string;
restartAfterCrashDelayMs?: number;
}
  • Questo plugin rileva il ripristino dopo un crash della WebView. Non previene il crash sottostante.
  • Il runtime JavaScript ripristinato è nuovo, quindi qualsiasi stato in memoria della WebView precedente è già andato perduto quando viene attivato questo API.
  • I riavvii pianificati scrivono reason: 'periodicRestart'; i riavvii manuali scrivono reason: 'manualRestart'Salva lo stato non salvato prima di abilitare intervalli di riavvio brevi, cron schedule o chiamate restartWebView().
  • restartCron utilizza la sintassi cron a 5 campi nel fuso orario locale del dispositivo, ad esempio 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.
  • Su Android, potrebbero essere disponibili campi extra come didCrash e rendererPriorityAtExit potrebbero essere disponibili.
  • Su iOS, il plugin registra appState quando viene rilevato il termine del processo WebView. I riavvii manuali o pianificati ricostruiscono la vista bridge di Capacitor per creare un nuovo WKWebView viene creato.

Questo riferimento è sincronizzato da src/definitions.ts in capacitor-webview-crash.

Se stai usando @capgo/capacitor-webview-crash per pianificare il comportamento dei media nativi e dell'interfaccia, collegalo a Utilizzo di @capgo/capacitor-webview-crash per la funzionalità nativa in Utilizzo di @capgo/capacitor-webview-crash, Uso di @capgo/capacitor-live-activities per la funzionalità nativa nella pagina Uso di @capgo/capacitor-live-activities, @capgo/capacitor-live-activities per il dettaglio implementativo in @capgo/capacitor-live-activities, Uso di @capgo/capacitor-video-player per la funzionalità nativa nella pagina Uso di @capgo/capacitor-video-player, e @capgo/capacitor-video-player per il dettaglio implementativo in @capgo/capacitor-video-player.