Aller au contenu

@capgo/capacitor-webview-crash

Redémarrer nativement les WebViews plantées et recycler les WebViews de longue durée à intervalle fixe

Redémarrer nativement les WebViews plantées et recycler les WebViews de longue durée à intervalle fixe

Commencez par getPendingCrashInfo() et les autres méthodes principales listées ci-dessous.

PlateformeSupportNotes
iOSOuiNatif
AndroidOuiNatif
WebPartielVoir le guide de démarrage
  • Redémarrage après un crash natif - Redémarre la WebView sur iOS ou Android lorsque le processus de rendu s'arrête.
  • Redémarrage planifié - Recycle les WebViews actives depuis longtemps via un timer natif utilisant restartIntervalMs ou l'heure système restartCron.
  • Redémarrage natif manuel - Permet à JavaScript de demander une nouvelle WebView native avec restartWebView() sans recharger la page.
  • Config Capacitor typée - Expose WebViewCrashPluginConfig pour plugins.WebViewCrash dans capacitor.config.ts.
  • getPendingCrashInfo - Renvoie le marqueur stocké de crash natif ou de redémarrage, ou null lorsque rien n'est en attente.
  • clearPendingCrashInfo - Efface le marqueur stocké une fois que votre application a restauré son état.
  • simulateCrashRecovery - Crée un faux marqueur de crash pour tester les flux de récupération localement.
  • addListener - Déclenche webViewRestoredAfterCrash pour les marqueurs de crash et webViewRestoredAfterRestart pour tout marqueur de redémarrage natif.
MéthodeDescription
getPendingCrashInfoRenvoie le marqueur de crash natif ou de redémarrage stocké, ou null lorsque rien n'est en attente.
clearPendingCrashInfoEfface le marqueur stocké une fois que votre application a restauré son état.
simulateCrashRecoveryCrée un faux marqueur de crash pour tester les flux de récupération localement.
restartWebViewÉcrit reason: 'manualRestart' et demande au code natif de créer une nouvelle WebView.
addListenerDéclenche webViewRestoredAfterCrash ou webViewRestoredAfterRestart lorsqu'un écouteur est attaché et qu'un marqueur correspondant est toujours en attente.
removeAllListenersSupprime tous les écouteurs du plugin.

Le plugin enrichit Capacitor avec une PluginsConfig entrée de configuration WebViewCrash configuration de l'entrée :

export interface WebViewCrashPluginConfig {
restartOnCrash?: boolean;
restartIntervalMs?: number;
restartCron?: string;
restartAfterCrashDelayMs?: number;
}
  • Ce plugin détecte la récupération après un crash de WebView. Il ne prévient pas le crash sous-jacent.
  • Le runtime JavaScript récupéré est nouveau ; tout état en mémoire de la WebView précédente est déjà perdu lorsque ce API se déclenche.
  • Les redémarrages programmés écrivent reason: 'periodicRestart'; les redémarrages manuels écrivent reason: 'manualRestart'. Persistez l'état non sauvegardé avant d'activer des intervalles de redémarrage courts, des tâches cron ou d'appeler restartWebView().
  • restartCron utilise la syntaxe cron à 5 champs dans le fuseau horaire local de l'appareil, par exemple 0 3 * * * pour un redémarrage quotidien à 03:00. Ne configurez pas les deux programmes en même temps : l'initialisation native génère une erreur de config fatale quand restartCron est défini et que restartIntervalMs est supérieur à 0.
  • Sur Android, des champs supplémentaires tels que didCrash et rendererPriorityAtExit peuvent être disponibles.
  • Sur iOS, le plugin enregistre appState lorsque le processus WebView terminé est observé. Les redémarrages manuels et programmés reconstruisent la vue du bridge Capacitor afin qu'un nouveau WKWebView soit créé.

Cette référence est synchronisée depuis src/definitions.ts dans capacitor-webview-crash.

Si vous utilisez @capgo/capacitor-webview-crash pour planifier le comportement des médias et de l'interface natifs, connectez-l’à Utiliser @capgo/capacitor-webview-crash pour la fonctionnalité native dans Utiliser @capgo/capacitor-webview-crash, Utiliser @capgo/capacitor-live-activities pour la capacité native dans Utiliser @capgo/capacitor-live-activities @capgo/capacitor-live-activities pour le détail d'implémentation dans @capgo/capacitor-live-activities Utiliser @capgo/capacitor-video-player pour la capacité native dans Utiliser @capgo/capacitor-video-player, et @capgo/capacitor-video-player pour le détail d'implémentation dans @capgo/capacitor-video-player.