Passer au contenu principal
@capgo/capacitor-crash-de-la-vue Auth & Sécurité Open source

Crash de WebView plugin Capacitor

Réinitialiser les WebViews crashés nativement et recycler les WebViews longs courants à intervalle fixe

Installer

bun add @capgo/capacitor-webview-crash bunx cap sync
npm, pnpm ou yarn
  • npm install @capgo/capacitor-webview-crash
  • pnpm add @capgo/capacitor-webview-crash
  • yarn add @capgo/capacitor-webview-crash

Guide

How to utiliser WebView Crash dans Capacitor

Testez sur appareil

Téléchargez l'application Capgo, puis scannez le QR code.

Vue d'ensemble du plugin WebView Crash QR code

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.
  • WebViewCrashPluginConfig Types plugins.WebViewCrash options dans capacitor.config.ts.
  • getPendingCrashInfo - Renvoie le marqueur de crash ou de redémarrage natif stocké, ou null Rien n'est en attente.
  • clearPendingCrashInfo Supprime le marqueur stocké après que votre application ait restauré son état.
  • simulateCrashRecovery Crée un marqueur de crash fictif afin de pouvoir tester les flux de récupération localement.
  • webViewRestoredAfterCrash L'é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__ :

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

FAQ

FAQ du plugin WebView Crash

Comment installez-vous le plugin de crash de la vue Web dans une application Capacitor ?

Exécutez « bun add @capgo/capacitor-webview-crash » (ou « npm install @capgo/capacitor-webview-crash »), puis exécutez « bunx cap sync » afin que les projets iOS et Android prennent en compte les natives code. Importez-l’à partir de « @capgo/capacitor-webview-crash » dans votre application code.

Le plugin @capgo/capacitor-webview-crash fonctionne-t-il avec React, Vue et Angular ?

Oui. Le plugin de crash de la vue Web est un package Capacitor, il fonctionne donc avec tout framework web qui s'exécute à l'intérieur de Capacitor, y compris Ionic, React, Vue, Angular, Svelte et JavaScript pur.

Quelle version de Capacitor est prise en charge par @capgo/capacitor-webview-crash ?

Capgo plugins suivent la version majeure de Capacitor : utilisez la version majeure du plugin qui correspond à votre version majeure de Capacitor (par exemple, plugin v8 avec Capacitor 8). La table de compatibilité dans le README du GitHub liste les versions maintenues.

Le plugin @capgo/capacitor-webview-crash est-il gratuit et open source ?

Oui. Le code source code est public sur GitHub à l'adresse https://github.com/Cap-go/capacitor-webview-crash/ et le package est gratuit à installer à partir de npm. Les rapports de bugs et les demandes de pull sont les bienvenus.

Puis-je mettre à jour code qui utilise WebView Crash sans passer par une revue de l'App Store ?

L'installation ou la mise à niveau du plugin change les natives code, il faut donc une nouvelle build de l'application. Après cela, les modifications JavaScript, HTML et CSS qui appellent le plugin peuvent être déployées instantanément avec les mises à jour Capgo.

Envoyez les modifications de WebView Crash sans attendre la révision de l'application

Une fois le plugin dans votre magasin de build, Capgo les mises à jour en temps réel déclenchent vos modifications JavaScript, HTML et CSS chez les utilisateurs en quelques minutes.

Démarrer avec Capgo