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- Tipiplugins.WebViewCrashopzioni incapacitor.config.ts.getPendingCrashInfo- Restituisce il crash nativo o il marker di riavvio salvato, oppurenullquando 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
- GitHub: https://github.com/Cap-go/capacitor-webview-crash/
- Documentazione: /docs/plugins/webview-crash/
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.