Guide
Tutoriel sur la panne de WebView
Utiliser @capgo/capacitor-webview-crash
Détection des panne de WebView récupérées, redémarrage des WebViews morts nativement, et recyclage des WebViews longs en cours sur un intervalle fixe avant que la pression de mémoire se transforme en OOM.
Installer
npm install @capgo/capacitor-webview-crash
npx cap sync
Ce plugin expose
- Redémarrage natif après les crashes de WebView sur iOS et Android.
- Redémarrage de WebView natif à intervalles fixes pour les applications kiosk, POS, de signalisation, de scanner et de tableau de bord qui fonctionnent pendant des jours.
restartWebView- Demandez à JavaScript un WebView natif frais sans faire recharger la page.WebViewCrashPluginConfig- Typesplugins.WebViewCrashoptions danscapacitor.config.ts.getPendingCrashInfo- Retourne le marqueur de crash ou de redémarrage natif stocké, ounulllorsqu'il n'y a rien en attente.clearPendingCrashInfo- Efface le marqueur stocké après que votre application ait restauré son état.simulateCrashRecovery- Crée un marqueur de crash fictif afin de tester les flux de récupération localement.webViewRestoredAfterCrash- Événement de listener déclenché lorsqu'un marqueur de crash est toujours en attente dans le runtime récupéré.webViewRestoredAfterRestart- Événement de listener déclenché lorsqu'il y a toujours un marqueur de redémarrage natif en attente.
Exemple d'utilisation
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 en même temps : l'initialisation native lance une erreur de configuration mortelle lorsque restartCron est défini et restartIntervalMs est supérieur à 0. Enregistrez l'état critique de l'application avant d'utiliser des calendriers courts.
Redémarrage Manuel Natif
Appellez lorsque JavaScript décide que la vue native WebView doit être remplacée de manière proactive, par exemple après un flux de travail lourd en mémoire : restartWebView() La méthode écrit
await WebViewCrash.restartWebView();
et demande à la vue native __CAPGO_KEEP_0__ de créer une vue WebView fraîche. Android recrée l'activité hôte. iOS reçoit la vue de pont __CAPGO_KEEP_1__ pour créer une nouvelle reason: 'manualRestart' and asks native code to create a fresh WebView. Android recreates the host activity. iOS rebuilds the Capacitor bridge view so a new WKWebView Référence complète
__CAPGO_KEEP_0__:
- https://GitHub.com/Cap-go/__CAPGO_KEEP_1__-vue-webview-crash/ https://github.com/Cap-go/capacitor-webview-crash/
- Continuez à partir de l'utilisation de @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-vue-webview-crash
Keep going from Using @capgo/capacitor-webview-crash
Utilisation de @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-vue-webview-crash Utilisation de @capgo/capacitor-vue-webview-crash planer les comportements de médias et d'interface natives, les connecter avec @capgo/capacitor-webview-crash pour les détails d'implémentation dans @capgo/capacitor-webview-crash, Démarrage pour les détails d'implémentation dans Démarrage, Utiliser @capgo/capacitor-live-activités pour la capacité native dans Utiliser @capgo/capacitor-live-activités, @capgo/capacitor-live-activités pour les détails d'implémentation dans @capgo/capacitor-live-activités, et Utiliser @capgo/capacitor-video-joueur pour la capacité native dans Utiliser @capgo/capacitor-video-joueur.