Saltar al contenido

@capgo/capacitor-webview-crash

Reinicia WebViews caídos de forma nativa y recicla WebViews de larga duración a intervalos fijos

Reinicia WebViews caídos de forma nativa y recicla WebViews de larga duración a intervalos fijos

Empieza con getPendingCrashInfo() y los demás métodos principales detallados abajo.

PlataformaSoporteNotas
iOSSíNativo
AndroidSíNativo
WebParcialVer inicio rápido
  • Reinicio por crash nativo - Reinicia el WebView en iOS o Android cuando el proceso del renderer muere.
  • Reinicio programado - Recicla WebViews de larga ejecución mediante un temporizador nativo usando restartIntervalMs o un reloj de pared restartCron.
  • Reinicio nativo manual - Permite que JavaScript solicite un nuevo WebView nativo con restartWebView() sin necesidad de recargar la página.
  • Configuración de Capacitor tipada - Expone WebViewCrashPluginConfig para plugins.WebViewCrash en capacitor.config.ts.
  • getPendingCrashInfo - Devuelve el crash nativo o el marcador de reinicio guardado, o null cuando no hay nada pendiente.
  • clearPendingCrashInfo - Borra el marcador guardado una vez que la app haya restaurado su estado.
  • simulateCrashRecovery - Crea un marcador de crash falso para probar los flujos de recuperación localmente.
  • addListener - Dispara webViewRestoredAfterCrash para marcadores de crash y webViewRestoredAfterRestart para cualquier marcador de reinicio nativo.
MétodoDescripción
getPendingCrashInfoDevuelve el marcador almacenado de crash nativo o reinicio, o null cuando no hay nada pendiente.
clearPendingCrashInfoBorra el marcador almacenado después de que tu app haya restaurado su estado.
simulateCrashRecoveryCrea un marcador de crash falso para probar los flujos de recuperación en local.
restartWebViewEscribe reason: 'manualRestart' y pide al code nativo que cree un WebView nuevo.
addListenerSe dispara webViewRestoredAfterCrash o webViewRestoredAfterRestart cuando se adjunta un listener y aún hay un marcador correspondiente pendiente.
removeAllListenersElimina todos los listeners del plugin.

El plugin añade a Capacitor PluginsConfig una entrada de WebViewCrash configuración tipada:

export interface WebViewCrashPluginConfig {
restartOnCrash?: boolean;
restartIntervalMs?: number;
restartCron?: string;
restartAfterCrashDelayMs?: number;
}
  • Este plugin detecta la recuperación tras un crash de la WebView. No evita el crash subyacente.
  • El runtime de JavaScript recuperado es nuevo, por lo que cualquier estado en memoria de la WebView anterior habrá desaparecido cuando se dispare este API.
  • Los reinicios programados escriben reason: 'periodicRestart'; los reinicios manuales escriben reason: 'manualRestart'. Guarda el estado no guardado antes de activar intervalos de reinicio cortos, cron schedules o llamar a restartWebView().
  • restartCron usa la sintaxis cron de 5 campos en la zona horaria local del dispositivo, por ejemplo 0 3 * * * para un reinicio diario a las 03:00. No configures ambos horarios a la vez: la inicialización nativa lanza un error fatal de configuración cuando restartCron está configurado y restartIntervalMs es mayor que 0.
  • En Android, podrían estar disponibles campos adicionales como didCrash y rendererPriorityAtExit podría estar disponible.
  • En iOS, el plugin registra appState cuando se detecta el cierre del proceso WebView. Los reinicios manuales o programados reconstruyen la vista del bridge de Capacitor para que una nueva WKWebView se crea.

Esta referencia se sincroniza desde src/definitions.ts en capacitor-webview-crash.

Si estás usando @capgo/capacitor-webview-crash para planificar el comportamiento de los medios nativos y la interfaz, conéctalo con Uso de @capgo/capacitor-webview-crash para la capacidad nativa en Uso de @capgo/capacitor-webview-crash, Uso de @capgo/capacitor-live-activities para la capacidad nativa en Uso de @capgo/capacitor-live-activities, @capgo/capacitor-live-activities para los detalles de implementación en @capgo/capacitor-live-activities, Uso de @capgo/capacitor-video-player para la capacidad nativa en Uso de @capgo/capacitor-video-player, y @capgo/capacitor-video-player para el detalle de implementación en @capgo/capacitor-video-player.