Passer au contenu principal
Retour aux plugins
@capgo/capacitor-webview-crash
Tutoriel
@capgo/capacitor-webview-crash

Crash de WebView

Redémarrer les WebViews crashés nativement et recycler les WebViews longs en cours sur un intervalle fixe

Guide

Tutoriel sur la Panne de Vue d'Application

Utilisation de @capgo/capacitor-vue-d-application-crash

Détection des panne de Vue d'application récupérées, redémarrage des WebViews morts nativement, et recyclage des WebViews longue durée à intervalle fixe avant que la pression de mémoire se transforme en OOM.

Installation

npm install @capgo/capacitor-webview-crash
npx cap sync

Ce Qu'il Expose

  • Redémarrage natif après les panne de Vue d'application sur iOS et Android.
  • Redémarrage de Vue d'application à intervalle fixe pour les applications kiosque, POS, affichage, scanner et tableau de bord qui fonctionnent pendant des jours.
  • restartWebView - Les requêtes JavaScript peuvent demander une Vue d'application native fraîche sans faire recharger la page.
  • WebViewCrashPluginConfig - Types plugins.WebViewCrash options en capacitor.config.ts.
  • getPendingCrashInfo - Renvoie le marqueur de crash ou de redémarrage natif stocké, ou null lorsqu'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é lorsque le marqueur de crash est toujours en attente dans le runtime récupéré.
  • webViewRestoredAfterRestart - Événement de listener déclenché lorsque tout marqueur de redémarrage natif est toujours 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 horaire 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 horaires en même temps : l'initialisation native lance une erreur de configuration mortelle lorsque restartCron est défini et restartIntervalMs est supérieur à 0. Sauvegardez l'état critique de l'application avant d'utiliser des horaires courts.

Redémarrage Native Manuel

Appelez restartWebView() 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 :

await WebViewCrash.restartWebView();

La méthode écrit reason: 'manualRestart' et demande à la native code de créer une vue WebView fraîche. Android reçoit une nouvelle activité hôte. iOS reçoit une nouvelle vue de pont Capacitor WKWebView est créé à la place de la rechargement de la page actuelle.

Référence complète

Continuez de là à partir de l'utilisation de @capgo/capacitor-webview-crash

Si vous utilisez L'utilisation de @capgo/capacitor-webview-crash pour planifier le comportement de médias et d'interface natifs, connectez-le 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 Getting Started, En utilisant @capgo/capacitor-activités-en-ligne pour la capacité native dans En utilisant @capgo/capacitor-activités-en-ligne, @capgo/capacitor-activités-en-ligne pour les détails d'implémentation dans @capgo/capacitor-activités-en-ligne, et En utilisant @capgo/capacitor-joueur-de-videos pour la capacité native dans En utilisant @capgo/capacitor-joueur-de-videos.