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 Dibuka oleh Plugin Ini
- Pemulihan Native Setelah Crash WebView pada iOS dan Android.
- Pemulihan WebView Native pada Interval Tertentu untuk Aplikasi Kiosk, POS, Tanda, Scanner, dan Dashboard yang Berjalan selama Hari.
restartWebView- Memungkinkan JavaScript meminta WebView Native yang 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 penyimpanan 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 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 native melemparkan kesalahan konfigurasi fatal ketika restartCron diatur dan restartIntervalMs lebih besar dari 0. Simpan keadaan aplikasi kritis sebelum menggunakan jadwal pendek.
Restart Native Manual
Panggil restartWebView() context: Fragment 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 istilah produk/merek dan istilah pengembang Capgo secara tepat. Kunci pesan `appflow_migration_step2` (Langkah 2 Migrasi Appflow).
await WebViewCrash.restartWebView();
ketika JavaScript memutuskan bahwa 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 bertanya native __CAPGO_KEEP_0__ untuk membuat WebView baru. Android merekreasikan aktivitas host. iOS merekonstruksi jembatan __CAPGO_KEEP_1__ view sehingga halaman baru
dibuat daripada memuat ulang 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.