Lompat ke konten utama
Kembali ke plugin
@capgo/capacitor-webview-crash
Tutorial
@capgo/capacitor-webview-crash

Crash WebView

Mulai ulang WebViews yang crash secara native dan daur ulang WebViews yang berjalan lama pada interval waktu tertentu

Petunjuk

Tutorial tentang Crash WebView

Tes di perangkat

Unduh aplikasi Capgo terlebih dahulu, kemudian scan kode QR code.

Tautan QR Pratinjau Plugin Crash WebView code

Menggunakan @capgo/capacitor-webview-crash

Deteksi crash WebView yang ditemukan kembali, restart WebView mati secara native, dan daur ulang WebView yang berjalan lama pada interval tetap sebelum tekanan memori berubah menjadi OOM.

Pasang

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

Apa yang Dapat Diketahui Plugin Ini

  • Restart native setelah crash WebView pada iOS dan Android.
  • Restart WebView native pada interval tetap untuk aplikasi kiosk, POS, tanda, scanner, dan dashboard yang berjalan selama hari.
  • restartWebView - Biarkan JavaScript meminta WebView native segar tanpa melakukan reload halaman.
  • WebViewCrashPluginConfig - Tipe plugins.WebViewCrash opsi dalam capacitor.config.ts.
  • getPendingCrashInfo - Mengembalikan marker crash atau restart native yang disimpan, atau null ketika tidak ada yang menunggu.
  • clearPendingCrashInfo - Membersihkan marker yang disimpan setelah aplikasi Anda telah mengembalikan ke keadaan awalnya.
  • simulateCrashRecovery - Membuat marker kegagalan palsu sehingga alur pemulihan dapat diuji secara lokal.
  • webViewRestoredAfterCrash - Event pendengar yang dipicu ketika marker kegagalan masih menunggu di runtime yang telah dipulihkan.
  • webViewRestoredAfterRestart - Event pendengar yang dipicu ketika ada marker restart native yang masih menunggu.

Contoh Penggunaan

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

Restart Otomatis Native

Konfigurasi perilaku restart di capacitor.config.ts agar tetap berfungsi ketika JavaScript tidak tersedia:

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;

Restart yang direncanakan menulis reason: 'periodicRestart' Gunakan restartIntervalMs untuk interval tertentu atau restartCron untuk jadwal cron 5-field di zona waktu lokal perangkat, seperti 0 3 * * * untuk restart harian pukul 03:00. Jangan konfigurasi kedua jadwal sekaligus: inisialisasi asli melemparkan kesalahan konfigurasi fatal ketika restartCron dipasang dan restartIntervalMs lebih besar dari 0. Simpan kondisi aplikasi kritis sebelum menggunakan jadwal pendek.

Manual Restart Asli

Panggil restartWebView() ketika JavaScript memutuskan WebView asli harus diganti secara proaktif, misalnya setelah alur kerja berat memori:

await WebViewCrash.restartWebView();

Metode menulis reason: 'manualRestart' dan meminta native code untuk membuat WebView baru yang segar. Android merekreasi aktivitas host. iOS membangun kembali jembatan Capacitor view sehingga halaman baru WKWebView dibuat bukan mengisi halaman saat ini.

Referensi Lengkap

Teruskan dari Menggunakan @capgo/capacitor-webview-crash

Jika Anda menggunakan Menggunakan @capgo/capacitor-webview-crash untuk merencanakan perilaku media dan antarmuka native, hubungkannya dengan @capgo/capacitor-webview-crash untuk detail implementasi di @capgo/capacitor-webview-crash, Panduan Awal untuk detail implementasi di Panduan Awal, Menggunakan @capgo/capacitor-live-activities untuk kemampuan asli di Menggunakan @capgo/capacitor-live-activities, @capgo/capacitor-live-activities untuk detail implementasi di @capgo/capacitor-live-activities, dan Menggunakan @capgo/capacitor-video-player untuk kemampuan asli di Menggunakan @capgo/capacitor-video-player.