Richtlinie
Tutorial zum WebView-Crash
Mit @capgo/capacitor-webview-crash
Durchführen Sie einen erneuten WebView-Crash, starten Sie tote WebViews nativ und recyclen Sie lange laufende WebViews auf einem festen Intervall, bevor sich die Speicherdynamik in einen OOM verwandelt.
Installieren
npm install @capgo/capacitor-webview-crash
npx cap sync
Was dieses Plugin enthüllt
- Neustart der nativen App nach WebView-Crashes auf iOS und Android.
- Festzeitgesteuertes neuerliches Starten der nativen App für Kiosk-, POS-, Signage-, Scanner- und Dashboard-Anwendungen, die Tage laufen.
restartWebView- Lassen Sie JavaScript eine frische native WebView ohne Seitenaufruf anfordern.WebViewCrashPluginConfig- Artenplugins.WebViewCrashOptionen incapacitor.config.ts.getPendingCrashInfo- Gibt das gespeicherte native Crash- oder Neustartmarker zurück, odernullwenn nichts mehr pendelt.clearPendingCrashInfo- Löschet den gespeicherten Marker nachdem Ihre App ihren Zustand wiederhergestellt hat.simulateCrashRecovery- Erstellt einen fiktiven Crashmarker, um lokale Recovery-Flows zu testen.webViewRestoredAfterCrash- Ereignis, das ausgelöst wird, wenn ein Crashmarker noch pendelt in der wiederhergestellten Runtime.webViewRestoredAfterRestart- Ereignis, das ausgelöst wird, wenn ein beliebiger nativer Neustartmarker noch pendelt.
Beispielhafte Verwendung
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);
}
Native Auto Restart
Konfigurieren Sie das Neustartverhalten in capacitor.config.ts damit es weiterläuft, wenn JavaScript nicht verfügbar ist:
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;
Geplante Neustarts schreiben reason: 'periodicRestart' . Verwenden Sie restartIntervalMs für festgelegte Intervalle oder restartCron für ein 5-Felder-Cron-Schema in der Gerätezeitzone, wie z.B. 0 3 * * * für einen täglichen Neustart um 03:00 Uhr. Konfigurieren Sie nicht beide Schedules gleichzeitig: Die native Initialisierung wirft einen fatalen Konfigurationsfehler, wenn restartCron festgelegt ist und restartIntervalMs größer als ist. Persistieren Sie kritische App-Zustände, bevor Sie kurze Schedules verwenden. 0__CAPGO_KEEP_0__
Manueller Native Neustart
Aufrufen restartWebView() Wenn JavaScript entscheidet, dass die native WebView vorab ersetzt werden sollte, zum Beispiel nach einem memory-intensiven Workflow:
await WebViewCrash.restartWebView();
Die Methode schreibt reason: 'manualRestart' und fragt die native code an, um eine frische WebView zu erstellen. Android reaktivierte die Hostaktivität. iOS rekonstruiert die Capacitor-Brückeansicht, sodass stattdessen eine neue WKWebView erstellt wird, anstatt die aktuelle Seite neu zu laden.
Vollständige Referenz
- GitHub: https://github.com/Cap-go/capacitor-webview-crash/
- Dokumentation: /docs/plugins/webview-crash/
Fortsetzen Sie mit Verwendung von @capgo/capacitor-webview-crash
Wenn Sie die Verwendung von Verwendung von @capgo/capacitor-webview-crash um native Medien- und Schnittstellenverhalten zu planen, mit @capgo/capacitor-webview-crash für die Implementierungsdetails in @capgo/capacitor-webview-crash, Einstieg für die Implementierungsdetails in Einstieg, Mit @capgo/capacitor-live-activities für die native Fähigkeit in Mit @capgo/capacitor-live-activities, @capgo/capacitor-live-activities für die Implementierungsdetails in @capgo/capacitor-live-activities, und Mit @capgo/capacitor-video-player für die native Fähigkeit in Mit @capgo/capacitor-video-player.