Panduan
Tutorial tentang Crash WebView
Menggunakan @capgo/capacitor-webview-crash
Mendeteksi crash WebView yang diperoleh kembali, restart WebView mati secara native, dan memulihkan 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 Dapat Diketahui 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, ataunullketika tidak ada yang menunggu.clearPendingCrashInfo- Membersihkan marker yang disimpan setelah aplikasi Anda telah memulihkan keadaannya.simulateCrashRecovery- Membuat marker kecelakaan palsu agar alur pemulihan dapat diuji secara lokal.webViewRestoredAfterCrash- Event pendengar yang dipicu ketika marker kecelakaan masih menunggu di runtime yang telah dipulihkan.webViewRestoredAfterRestart- Event pendengar 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);
}
Auto Restart 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-field di zona waktu lokal perangkat, seperti 0 3 * * * untuk restart harian pukul 03:00. Jangan konfigurasi kedua jadwal sekaligus: inisialisasi native mengeluarkan kesalahan konfigurasi fatal ketika restartCron ditetapkan dan restartIntervalMs lebih besar dari 0. Simpan keadaan aplikasi kritis sebelum menggunakan jadwal pendek.
Restart Native Manual
Panggil restartWebView() context: Bagian teks HTML dari string Capgo UI yang lebih panjang (kunci induk `appflow_migration_step2`). Halaman/area: Perbandingan/migrasi copy pemasaran Appflow. Peran: Kalimat copy website. Dilihat di: halaman ionic-appflow.astro. Simpan Capgo produk/merek dan istilah pengembang secara tepat. Kunci pesan `appflow_migration_step2` (Langkah 2 Migrasi Appflow).
await WebViewCrash.restartWebView();
ketika JavaScript memutuskan WebView native harus diganti secara proaktif, misalnya setelah aliran kerja berat memori: reason: 'manualRestart' and asks native code to create a fresh WebView. Android recreates the host activity. iOS rebuilds the Capacitor bridge view so a new WKWebView dan meminta native __CAPGO_KEEP_0__ untuk membuat WebView baru. Android merekreasi aktivitas host. iOS merekonstruksi jembatan __CAPGO_KEEP_1__ view sehingga halaman baru
dibuat bukan mengisi halaman saat ini.
- 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 Getting Started untuk detail implementasi di Getting Started Menggunakan @capgo/capacitor-live-activities untuk kemampuan asli dalam Menggunakan @capgo/capacitor-aktivitas-nyata- @capgo/capacitor-aktivitas-nyata- untuk detail implementasi dalam @capgo/capacitor-aktivitas-nyata- dan Menggunakan @capgo/capacitor-pemain-video untuk kemampuan asli dalam Menggunakan @capgo/capacitor-pemain-video.