Utilisation de @capgo/capacitor-webview-crash
Détections de crash de WebView récupéré, redémarrage de WebViews morts nativement et recyclage de WebViews longs courant à intervalle fixe avant que la pression de mémoire ne se transforme en OOM.
Installer
npm install @capgo/capacitor-webview-crash
npx cap sync
Ce que ce Plugin Expose
- Redémarrage natif après les crashes de WebView sur iOS et Android.
- Fixed-interval native WebView restart for kiosk, POS, signage, scanner, and dashboard apps that run for days.
restartWebView- Permet à JavaScript de demander un WebView natif frais sans faire recharger la page.WebViewCrashPluginConfigTypesplugins.WebViewCrashoptions danscapacitor.config.ts.getPendingCrashInfo- Renvoie le marqueur de crash ou de redémarrage natif stocké, ounullRien n'est en attente.clearPendingCrashInfoSupprime le marqueur stocké après que votre application ait restauré son état.simulateCrashRecoveryCrée un marqueur de crash fictif afin de pouvoir tester les flux de récupération localement.webViewRestoredAfterCrashL'événement du listener déclenché lorsque le marqueur de panne est toujours en attente dans le runtime récupéré.webViewRestoredAfterRestart- Événement du listener déclenché lorsqu'il reste un marqueur de redémarrage natif en attente.
Utilisation d'exemple
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);
}
Redémarrage auto natif
Configurez le comportement de redémarrage dans capacitor.config.ts afin qu'il continue de fonctionner lorsque JavaScript n'est pas 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;
Les redémarrages planifiés écrivent reason: 'periodicRestart'Utilisez restartIntervalMs pour des intervalles fixes ou restartCron pour un calendrier de 5 champs dans la zone horaire locale du dispositif, comme 0 3 * * * pour un redémarrage quotidien à 03 :00. N'configurez pas les deux calendriers à la fois : l'initialisation native génère une erreur de configuration mortelle lorsque restartCron est défini et restartIntervalMs est supérieur à 0Enregistrez l'état critique de l'application avant d'utiliser des calendriers courts.
Redémarrage natif manuel
Appeler restartWebView() Lorsque JavaScript décide que la vue native doit être remplacée de manière proactive, par exemple après un workflow lourd en mémoire :
await WebViewCrash.restartWebView();
La méthode écrit reason: 'manualRestart' et demande à la vue native code de créer une vue WebView fraîche. Android reçoit une nouvelle activité. iOS reçoit une nouvelle vue de pont Capacitor pour créer une nouvelle WKWebView La page est redirigée au lieu de recharger la page actuelle.
__CAPGO_KEEP_0__ :
- GitHub: https://github.com/Capgo/capacitor-crash-webview
- Documentation : /docs/plugins/webview-crash/
Continuez à utiliser @capgo/capacitor-webview-crash
Si vous utilisez En utilisant @capgo/capacitor-webview-crash pour planifier le comportement de médias natifs et d'interface, la connecter avec @capgo/capacitor-crash-webview pour les détails d'implémentation dans @capgo/capacitor-webview-crash Getting Started pour les détails d'implémentation dans Démarrage En utilisant @capgo/capacitor-live-activités pour la capacité native dans En utilisant @capgo/capacitor-live-activités @capgo/capacitor-live-activités pour les détails d'implémentation dans @capgo/capacitor-live-activités, et En utilisant @capgo/capacitor-joueur de vidéo pour la capacité native dans En utilisant @capgo/capacitor-joueur de vidéo