Guía
Tutoriales sobre WebView Crash
Usando @capgo/capacitor-webview-crash
Detectar WebView crash 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 OOM.
Instalar
npm install @capgo/capacitor-webview-crash
npx cap sync
¿Qué Este Plugin Expones
- Reinicio nativo después de que se caiga WebView en iOS y Android.
- Reinicio de WebView nativo a intervalos fijos para aplicaciones de kiosk, POS, señalización, escáner y tablero que funcionan durante días.
restartWebView- Deje que JavaScript solicite un WebView nativo fresco sin realizar una recarga de página.WebViewCrashPluginConfig- Tiposplugins.WebViewCrashopciones encapacitor.config.ts.getPendingCrashInfo- Devuelve el marcador de caída nativa o reinicio almacenado, onullcuando no hay nada pendiente.clearPendingCrashInfo- Borra el marcador almacenado después de que su aplicación haya restaurado su estado.simulateCrashRecovery- Crea un marcador de caída falso para que los flujos de recuperación puedan ser probados localmente.webViewRestoredAfterCrash- Evento de escucha disparado cuando todavía hay un marcador de caída pendiente en el runtime recuperado.webViewRestoredAfterRestart- Evento de escucha disparado cuando todavía hay algún marcador de reinicio nativo 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);
}
Arranque 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 cron de 5 campos en la zona horaria local del dispositivo, como 0 3 * * * para un reinicio diario a las 03:00. No configures 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. Guarda el estado crítico de la aplicación antes de usar horarios cortos.
Reinicio Automático Nativo Manual
Llamar restartWebView() cuando JavaScript decide que el navegador 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 pregunta al navegador nativo code que cree un navegador fresco. Android recrea la actividad del host. iOS reconstruye la vista de puente 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
Si estás utilizando Usando @capgo/capacitor-webview-crash para planificar el comportamiento de medios y interfaces nativas, conectarlo con @capgo/capacitor-webview-crash para los detalles de implementación en @capgo/capacitor-webview-crash, Inicio para los detalles de implementación en Inicio, Usando @capgo/capacitor-live-activities para la capacidad nativa en Usando @capgo/capacitor-live-activities, @capgo/capacitor-live-activities para los detalles de implementación en @capgo/capacitor-live-activities, y Usando @capgo/capacitor-video-player para la capacidad nativa en Usando @capgo/capacitor-video-player.