Petunjuk
Tutorial tentang Crash WebView
Menggunakan @capgo/capacitor-crash-webview
Deteksi crash WebView yang direcovery, restart WebView mati secara native, dan daur ulang WebView yang berjalan lama pada interval tertentu sebelum tekanan memori berubah menjadi OOM.
Pasang
npm install @capgo/capacitor-webview-crash
npx cap sync
Apa yang Dibuka oleh Plugin Ini
- Restart native setelah crash WebView pada iOS dan Android.
- Restart WebView native pada interval tertentu untuk aplikasi kiosk, POS, tanda, scanner, dan dashboard yang berjalan selama hari.
restartWebView- Biarkan JavaScript meminta WebView native segar tanpa melakukan reload halaman.WebViewCrashPluginConfig- Tipeplugins.WebViewCrashopsi dicapacitor.config.ts.getPendingCrashInfo- Mengembalikan marker crash atau restart native yang disimpan, ataunullwhen tidak ada yang menunggu.clearPendingCrashInfo- Membersihkan marker yang disimpan setelah aplikasi Anda telah memulihkan keadaan.simulateCrashRecovery- Membuat marker kegagalan palsu sehingga alur pemulihan dapat diuji secara lokal.webViewRestoredAfterCrash- Event listener yang dipicu ketika marker kegagalan masih menunggu di runtime yang dipulihkan.webViewRestoredAfterRestart- Event listener yang dipicu ketika marker restart native apa pun 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 dijadwalkan menulis reason: 'periodicRestart'. Gunakan restartIntervalMs untuk interval tertentu atau restartCron untuk jadwal cron 5 bidang 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 aplikasi kritis sebelum menggunakan jadwal pendek.
Restart Native Manual
Panggil restartWebView() ketika JavaScript memutuskan WebView native 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. Android merekreasi aktivitas host. iOS membangun kembali jembatan Capacitor view sehingga halaman baru WKWebView dibuat bukan mengisi halaman saat ini.
Referensi Lengkap
- GitHub: https://github.com/Cap-go/capacitor-webview-crash/
- Dokumen: /docs/plugins/webview-crash/
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, Mengawali untuk detail implementasi di Mengawali, Menggunakan @capgo/capacitor-live-activities untuk kemampuan asli di Menggunakan @capgo/capacitor-live-aktivitas, @capgo/capacitor-live-aktivitas untuk detail implementasi di @capgo/capacitor-live-aktivitas, dan Menggunakan @capgo/capacitor-video-player untuk kemampuan asli di Menggunakan @capgo/capacitor-video-player.