Guía
Cómo usar WebView Crash en Capacitor
Usando @capgo/capacitor-webview-crash
Detectar crash de WebView recuperado, reiniciar WebViews muertos 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é Este Plugin Exposa?
- Reiniciar nativamente después de crash de WebView en iOS y Android.
- Reinicio periódico nativo de WebView para aplicaciones de kiosco, 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 hacer un recarga de página.WebViewCrashPluginConfig- Tiposplugins.WebViewCrash- Opciones encapacitor.config.ts.getPendingCrashInfo- Devuelve el marcador de crash o reinicio nativo almacenado, onullcuando no hay nada pendiente.clearPendingCrashInfoElimina el marcador almacenado después de que tu aplicación haya restaurado su estado.simulateCrashRecovery- Elimina el marcador almacenado después de que tu aplicación haya restaurado su estado.webViewRestoredAfterCrash- Crea un marcador de crash falso para que los flujos de recuperación puedan ser probados localmente.webViewRestoredAfterRestart- Se dispara este evento de escucha cuando cualquier marcador de reinicio nativo sigue pendiente.
Uso de Ejemplos
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);
}
- Ejemplo de uso
- Reinicio automático nativo capacitor.config.ts Así sigue 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;
Reinicios programados escriben reason: 'periodicRestart' Utilice restartIntervalMs para intervalos fijos o restartCron para un cron de 5 campos en la zona horaria local del dispositivo, como 0 3 * * * No configure ambos horarios a la vez: la inicialización nativa lanza un error de configuración fatal cuando restartCron está configurado y restartIntervalMs es mayor que 0Persiste el estado de la aplicación crítico antes de usar horarios cortos.
Reinicio Nativo Manual
Llame restartWebView() cuando JavaScript decide que el WebView nativo 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 solicita a code nativo que cree una WebView fresca. Android recrea la actividad de host. iOS reconstruye la vista de puente Capacitor para un nuevo WKWebView en lugar de recargar la página actual
Referencia completa
- GitHub: https://github.com/Cap-go/capacitor-crash-de-ventana-de-web/
- Documentación: /docs/plugins/webview-crash/
Sigue adelante desde Usando @capgo/capacitor-webview-crash
Si estás utilizando Usando @capgo/capacitor-webview-crash para planificar el comportamiento de medios y interfaz nativos, conecta con @capgo/capacitor-crash-de-ventana-web para obtener detalles de implementación en @capgo/capacitor-webview-crash Configuración Inicial para los detalles de implementación en Configuración Inicial, Usando @capgo/capacitor-actividades-en-vivo para la capacidad nativa en Usando @capgo/capacitor-actividades-en-vivo, @capgo/capacitor-actividades-en-vivo para los detalles de implementación en @capgo/capacitor-actividades-en-vivo, y Usando @capgo/capacitor-reproductor-de-videos para la capacidad nativa en Usando @capgo/capacitor-reproductor-de-videos.