Utilizzo di @capgo/capacitor-webview-crash
Rileva i crash del WebView recuperato, 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
Cosa questo plugin espone
- Riavvio nativo dopo i crash del WebView su iOS e Android.
- Riavvio del WebView nativo a intervalli fissi per gli app di kiosk, POS, segnali, scanner e dashboard che funzionano per giorni.
restartWebView- Consente ai JavaScript di richiedere un WebView nativo fresco senza fare un reload della pagina.WebViewCrashPluginConfig- Tipiplugins.WebViewCrashopzioni incapacitor.config.ts.getPendingCrashInfo- Restituisce il marker di crash o riavvio nativo memorizzato, onullquando non ci sono 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);
}
Riavvio Auto Nativo
Configura il comportamento di riavvio 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 riavvi 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() 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. L'Android ricrea l'attività host. L'iOS ricostruisce il ponte di visualizzazione Capacitor per creare un nuovo WKWebView invece di ricaricare la pagina corrente.
Riferimento Completo
- GitHub: https://github.com/Cap-go/capacitor-webview-crash/
- Documentazione: /docs/plugins/webview-crash/
Continua con l'uso di @capgo/capacitor-webview-crash
Se stai utilizzando Utilizza @capgo/capacitor-webview-crash per pianificare il comportamento dei media e dell'interfaccia nativi, collegalo 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.