Langsung ke konten

@capgo/capacitor-webview-crash

Restart WebView yang crash secara native dan recycle WebView yang berjalan lama pada interval tetap

Restart WebView yang crash secara native dan recycle WebView yang berjalan lama pada interval tetap

Mulai dengan getPendingCrashInfo() dan metode inti lainnya yang tercantum di bawah ini.

PlatformDukunganCatatan
iOSYaNative
AndroidYaNative
WebParsialLihat panduan memulai
  • Restart crash Native - Me-restart WebView dari iOS atau Android saat proses renderer mati.
  • Restart terjadwal - Melakukan recycle pada WebView yang berjalan lama menggunakan timer native restartIntervalMs atau waktu real-time restartCron.
  • Restart native manual - Memungkinkan JavaScript meminta WebView native baru dengan restartWebView() tanpa melakukan reload halaman.
  • Konfigurasi Capacitor bertipe data - Mengekspos WebViewCrashPluginConfig untuk plugins.WebViewCrash di capacitor.config.ts.
  • getPendingCrashInfo - Mengembalikan marker native crash atau restart yang tersimpan, atau null saat tidak ada yang tertunda.
  • clearPendingCrashInfo - Menghapus marker yang tersimpan setelah app berhasil memulihkan state-nya.
  • simulateCrashRecovery - Membuat fake crash marker agar flow recovery bisa dites secara lokal.
  • addListener - Memicu webViewRestoredAfterCrash untuk crash marker dan webViewRestoredAfterRestart untuk setiap native restart marker.
MetodeDeskripsi
getPendingCrashInfoMengembalikan marker crash atau restart native yang tersimpan, atau null saat tidak ada yang tertunda.
clearPendingCrashInfoMenghapus marker yang tersimpan setelah aplikasi memulihkan state-nya.
simulateCrashRecoveryMembuat marker crash palsu agar alur recovery bisa diuji secara lokal.
restartWebViewMenulis reason: 'manualRestart' dan meminta code native untuk membuat WebView baru.
addListenerMemicu webViewRestoredAfterCrash atau webViewRestoredAfterRestart saat listener terpasang dan marker yang cocok masih tertunda.
removeAllListenersMenghapus semua plugin listener.

Plugin ini memperluas Capacitor dengan PluginsConfig entri konfigurasi WebViewCrash entri konfigurasi:

export interface WebViewCrashPluginConfig {
restartOnCrash?: boolean;
restartIntervalMs?: number;
restartCron?: string;
restartAfterCrashDelayMs?: number;
}
  • Plugin ini mendeteksi pemulihan setelah WebView crash. Plugin ini tidak mencegah crash yang terjadi.
  • Runtime JavaScript yang pulih adalah baru, jadi semua state in-memory dari WebView sebelumnya sudah hilang saat API ini dipicu.
  • Restart terjadwal ditetapkan reason: 'periodicRestart'; restart manual menulis reason: 'manualRestart'. Simpan state yang belum tersimpan sebelum mengaktifkan interval restart singkat, jadwal cron, atau memanggil restartWebView().
  • restartCron menggunakan sintaks cron 5-field dalam zona waktu lokal perangkat, contohnya 0 3 * * * untuk restart harian pukul 03:00. Jangan konfigurasi kedua jadwal sekaligus: inisialisasi native akan memicu error konfigurasi fatal saat restartCron diatur dan restartIntervalMs lebih besar dari 0.
  • Pada Android, field tambahan seperti didCrash dan rendererPriorityAtExit mungkin tersedia.
  • Pada iOS, plugin mencatat appState saat proses WebView yang terhenti terdeteksi. Restart manual maupun terjadwal akan membangun ulang view bridge Capacitor sehingga WKWebView baru akan dibuat.

Referensi ini disinkronkan dari src/definitions.ts di capacitor-webview-crash.

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