Guía
Tutorial sobre Crashes de WebView
Usando @capgo/capacitor-webview-crash
Detectar crash de WebView recuperado, reiniciar WebViews muertas nativamente y reciclar WebViews de larga duración en un intervalo fijo antes de que la presión de memoria se convierta en un OOM.
Instalar
npm install @capgo/capacitor-webview-crash
npx cap sync
¿Qué Exposición de este Plugin?
- Reiniciar nativamente después de crash de WebView en iOS y Android.
- Reinicio de WebView nativo con intervalo fijo para aplicaciones de kiosk, POS, señalización, escáner y panel de control que funcionan durante días.
restartWebView- Deja que JavaScript solicite un WebView nativo fresco sin realizar un recarga de página.WebViewCrashPluginConfig- Tiposplugins.WebViewCrashopciones encapacitor.config.ts.getPendingCrashInfo- Devuelve el marcador de crash o reinicio nativo almacenado, onullwhen nothing is pending.clearPendingCrashInfo- Elimina el marcador almacenado después de que tu aplicación haya restaurado su estado.simulateCrashRecovery- Crea un marcador de falla falso para que los flujos de recuperación puedan ser probados localmente.webViewRestoredAfterCrash- Se dispara el evento de escucha cuando un marcador de falla todavía está pendiente en el tiempo de ejecución recuperado.webViewRestoredAfterRestart- Se dispara el evento de escucha cuando cualquier marcador de reinicio nativo todavía está pendiente.
Ejemplo de 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);
}
Reinicio automático nativo
Configura el comportamiento de reinicio en capacitor.config.ts para que siga funcionando cuando JavaScript no esté disponible:
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;
Los reinicios programados escriben reason: 'periodicRestart'. Utiliza restartIntervalMs para intervalos fijos o restartCron para un cronograma de 5 campos en la zona horaria local del dispositivo, como 0 3 * * * para un reinicio diario a las 03:00. No configure ambos horarios al mismo tiempo: la inicialización nativa lanza un error de configuración fatal cuando restartCron está configurado y restartIntervalMs es mayor que 0. Persiste el estado de la aplicación crítico antes de usar horarios cortos.
Reiniciar Nativo Manual
Llamar restartWebView() cuando JavaScript decide que el navegador nativo WebView debe ser reemplazado de manera proactiva, por ejemplo después de un flujo de trabajo pesado en memoria:
await WebViewCrash.restartWebView();
El método escribe reason: 'manualRestart' y pide a nativo code que cree un WebView fresco. Android recrea la actividad de host. iOS reconstruye el puente de vista Capacitor para crear un nuevo WKWebView en lugar de recargar la página actual.
Referencia Completa
- GitHub: https://github.com/Cap-go/capacitor-webview-crash/
- Documentación: /docs/plugins/webview-crash/
Sigue adelante desde [Usando @capgo/capacitor-webview-crash](https://capgo.com/Cap-go/capacitor-webview-crash/)
Si estás utilizando [Usando @capgo/capacitor-webview-crash](https://capgo.com/Cap-go/capacitor-webview-crash/) para planificar el comportamiento de medios y interfaz nativa, conecta con [@capgo/capacitor-webview-crash](https://capgo.com/Cap-go/capacitor-webview-crash/) para obtener detalles de implementación en [@capgo/capacitor-webview-crash](https://capgo.com/Cap-go/capacitor-webview-crash/) Inicio para obtener detalles de implementación en Inicio, [Usando @capgo/capacitor-live-activities] para la capacidad nativa en Usando @capgo/capacitor-actividades-en-vivo, @capgo/capacitor-actividades-en-vivo para el detalle de implementación en @capgo/capacitor-actividades-en-vivo, y Usando @capgo/capacitor-reproductor-de-video para la capacidad nativa en Usando @capgo/capacitor-reproductor-de-video.