Vai al contenuto principale
@capgo/capacitor-crash del WebView Autenticazione e sicurezza Sorgente aperta

Crash del WebView Plugin Capacitor

Riavvia i WebViews bloccati nativamente e ricicla i WebViews di lunga durata a intervalli fissi

Installa

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

Guida

Come utilizzare WebView Crash in Capacitor

Testa sul dispositivo

Scarica l'app Capgo, poi scansione il QR code.

Preview del plugin di WebView Crash QR code

Utilizza @capgo/capacitor-webview-crash

Detecta i crash dei WebView recuperati, riavvia i WebView morti nativamente e ricicla i WebView di lunga durata a intervalli fissi prima che la pressione di memoria si trasformi in un OOM.

Installa

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

Cos'è questo plugin

  • Riavvio nativo dopo i crash dei WebView su iOS e Android.
  • Riavvio del WebView nativo a intervalli regolari per applicazioni kiosk, POS, segnaletica, scanner e dashboard che funzionano per giorni.
  • restartWebView - Consente ai JavaScript di richiedere un WebView nativo fresco senza fare un reload della pagina.
  • WebViewCrashPluginConfig - Tipi plugins.WebViewCrash - Opzioni in capacitor.config.ts.
  • getPendingCrashInfo - Restituisce il marker di crash o riavvio nativo memorizzato, o null quando non ci sono elementi in sospeso.
  • clearPendingCrashInfo - Cancella il marker memorizzato dopo che l'applicazione ha ripristinato lo stato.
  • simulateCrashRecovery - Crea un marker di crash falso per poter testare localmente i flussi di recupero.
  • webViewRestoredAfterCrash - Evento ascoltato quando il marker di crash è ancora in attesa nella runtime ripristinata.
  • webViewRestoredAfterRestart - Evento ascoltato quando qualsiasi marker di riavvio nativo è ancora in attesa.

- Esempio di utilizzo

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);
}

- Riavvio automatico

- Configura il comportamento di riavvio in capacitor.config.ts quindi continua a funzionare quando non è disponibile JavaScript:

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;

Ripristini programmati scrivono reason: 'periodicRestart'Usa restartIntervalMs per intervalli fissi o restartCron per un orario cron 5-campo nel fuso orario del dispositivo locale, ad esempio 0 3 * * * per un ripristino quotidiano alle 03:00. Non configurare entrambi gli orari contemporaneamente: l'inizializzazione nativa lancia un errore di configurazione fatale quando restartCron è impostato e restartIntervalMs è maggiore di 0. Salva lo stato critico dell'applicazione prima di utilizzare gli orari brevi.

Ripristino Nativo Manuale

Chiamare restartWebView() quando JavaScript decide di sostituire proattivamente la WebView nativa, ad esempio dopo un flusso di lavoro pesante in termini di memoria:

await WebViewCrash.restartWebView();

Il metodo scrive reason: 'manualRestart' e chiede al nativo code di creare una nuova vista WebView. L'Android ricrea l'attività host. L'iOS ricostruisce il ponte di visualizzazione Capacitor per creare una nuova WKWebView si crea invece di ricaricare la pagina corrente.

Riferimento completo

Continua da Utilizza @capgo/capacitor-webview-crash

Se stai utilizzando Utilizza @capgo/capacitor-webview-crash per pianificare il comportamento dei media e dell'interfaccia nativa, connettilo con @capgo/capacitor-webview-crash per i dettagli di implementazione in @capgo/capacitor-webview-crash Getting Started per i dettagli di implementazione in Avvio, Utilizzo di @capgo/capacitor-attività-in-vivo per la capacità nativa in Utilizzo di @capgo/capacitor-attività-in-vivo, @capgo/capacitor-attività-in-vivo per i dettagli di implementazione in @capgo/capacitor-attività-in-vivo, e Utilizzo di @capgo/capacitor-lettore-di-video per la capacità nativa in Utilizzo di @capgo/capacitor-lettore-di-video.

FAQ

Domande frequenti per il plugin WebView Crash

Come posso installare il plugin WebView Crash in un'app Capacitor?

Esegui "bun add @capgo/capacitor-webview-crash" (o "npm install @capgo/capacitor-webview-crash"), quindi esegui "bunx cap sync" affinché i progetti iOS e Android recuperino il codice nativo code. Importalo da "@capgo/capacitor-webview-crash" nella tua app code.

Funziona @capgo/capacitor-webview-crash con React, Vue e Angular?

Sì. WebView Crash è un pacchetto Capacitor, quindi funziona con qualsiasi framework web che esegue all'interno di Capacitor, compresi Ionic, React, Vue, Angular, Svelte e JavaScript puro.

Qual è la versione di Capacitor supportata da @capgo/capacitor-webview-crash?

Capgo plugin seguono la versione maggiore di Capacitor: utilizzare la versione maggiore del plugin che corrisponde alla versione maggiore di Capacitor (ad esempio plugin v8 con Capacitor 8). La tabella di compatibilità nel README di GitHub elenca le versioni mantenute.

È @capgo/capacitor-webview-crash gratuito e open source?

Sì. Il codice sorgente di code è pubblico su GitHub all'indirizzo https://github.com/Cap-go/capacitor-webview-crash/ e il pacchetto è gratuito per l'installazione da npm. I rapporti di bug e le richieste di pull sono accetti.

Posso aggiornare code che utilizza WebView Crash senza una revisione dell'App Store?

L'installazione o l'aggiornamento del plugin modifica il codice nativo di code, quindi richiede una nuova build dello store. Dopo di che, le modifiche JavaScript, HTML e CSS che chiamano il plugin possono essere distribuite immediatamente con Capgo live updates.

Invia modifiche WebView Crash senza aspettare la revisione dell'app

Una volta che il plugin è nel tuo store build, Capgo aggiornamenti live inviano le tue modifiche JavaScript, HTML e CSS agli utenti in minuti.

Inizia con Capgo