Menggunakan @capgo/capacitor-webview-crash
Deteksi kembali kegagalan WebView, restart WebView mati secara native, dan daur ulang WebView yang berjalan lama pada interval waktu tertentu sebelum tekanan memori berubah menjadi OOM.
Install
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 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- Jenisplugins.WebViewCrashopsi dalamcapacitor.config.ts.getPendingCrashInfo- Mengembalikan marker kejadian crash atau restart asli native, ataunullTidak ada yang menunggu.clearPendingCrashInfo- Membuat marker kejadian crash palsu agar alur pemulihan dapat diuji secara lokal.simulateCrashRecovery- Event pendengar yang dipicu ketika marker kejadian crash masih menunggu di runtime yang dipulihkan.webViewRestoredAfterCrash- Event pendengar yang dipicu ketika ada marker restart native yang masih menunggu.webViewRestoredAfterRestartEvent listener yang dipicu ketika ada marker restart native yang masih menunggu.
- Restart Otomatis Native
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);
}
- Konfigurasi perilaku restart di
- sehingga tetap berfungsi ketika JavaScript tidak tersedia: capacitor.config.ts Jadi, itu 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 waktu tetap 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 akan 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() ketika JavaScript memutuskan bahwa native WebView harus diganti secara proaktif, misalnya setelah suatu alur kerja yang berat memori:
await WebViewCrash.restartWebView();
Tuliskan metode reason: 'manualRestart' dan meminta native code untuk membuat WebView yang segar. Android menghidupkan kembali aktivitas host. iOS membangun kembali jembatan Capacitor view sehingga halaman baru WKWebView dibuat daripada memuat ulang halaman yang sedang berjalan.
Referensi Lengkap
- GitHub: https://github.com/Cap-go/capacitor-crash-webview/
- 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-crash pada Pemutus Pemirsa Web untuk detail implementasi di @capgo/capacitor-webview-crash, Mulai Menggunakan untuk detail implementasi di Mulai, Menggunakan @capgo/capacitor-aktivitas-hidup untuk kemampuan asli di Menggunakan @capgo/capacitor-aktivitas-hidup, @capgo/capacitor-aktivitas-hidup untuk detail implementasi di @capgo/capacitor-aktivitas-hidup, dan Menggunakan @capgo/capacitor-pemain-video untuk kemampuan asli di Menggunakan @capgo/capacitor-pemain-video.