Guida
Tutorial su WebView Crash
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- Tipiplugins.WebViewCrashopzioni incapacitor.config.ts.getPendingCrashInfo- Restituisce il marker di schianto o riavvio nativo memorizzato, onullquando 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.
- GitHub: https://github.com/Cap-go/capacitor-webview-crash/
- Documentazione: /docs/plugins/webview-crash/
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.