Verwendung von @capgo/capacitor-webview-crash
Detektieren Sie wiederhergestellte WebView-Crashes, starten Sie tote WebViews nativ neu und recyclen Sie lange laufende WebViews auf einem festen Intervall, bevor sich die Speicherdurchsatzdruck in einen OOM verwandelt.
Installieren
npm install @capgo/capacitor-webview-crash
npx cap sync
Was dieses Plugin offenlegt
- Natives Neustarten nach WebView-Crashes auf iOS und Android.
- Festintervall-natives Neustarten von WebViews für kiosk-, POS-, Signage-, Scanner- und Dashboard-Anwendungen, die Tage lang laufen.
restartWebView- Lassen Sie JavaScript ein frisches natives WebView anfordern, ohne eine Seite neu zu laden.WebViewCrashPluginConfig- Typenplugins.WebViewCrashOptionen incapacitor.config.ts.getPendingCrashInfo- Gibt die gespeicherte native Crash- oder Neustartmarke zurück odernullWenn nichts mehr im Gange ist.clearPendingCrashInfo- Löscht den gespeicherten Marker, nachdem sich Ihre App wieder in ihren Zustand zurückgesetzt hat.simulateCrashRecovery- Erstellt einen fiktiven Crash-Marker, damit Recovery-Flows lokal getestet werden können.webViewRestoredAfterCrash- Listener-Event wird ausgelöst, wenn ein Crash-Marker noch im Wartestand ist, nachdem sich die Runtime wiederhergestellt hat.webViewRestoredAfterRestart- Listener-Event wird ausgelöst, wenn ein beliebiger Native-Restart-Marker noch im Wartestand ist.
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 Neustarten 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 eine 5-Felder-Cron-Auftragsplanung im Geräte-Lokalzeitzone, wie z.B. 0 3 * * * für einen täglichen Neustart um 03:00 Uhr. Konfigurieren Sie beide Schedules nicht gleichzeitig: Die native Initialisierung wirft einen fatalen Konfigurationsfehler, wenn restartCron eingesetzt ist und restartIntervalMs größer als 0ist. Persistieren Sie kritische Anwendungsstatus vor der Verwendung kurzer Schedules.
Manueller Native Neustart
Aufrufen restartWebView() wenn JavaScript entscheidet, dass der native WebView vorzeitig ersetzt werden soll, zum Beispiel nach einem memory-intensiven Workflow:
await WebViewCrash.restartWebView();
Die Methode schreibt reason: 'manualRestart' und fragt den native code an, um ein frisches WebView zu erstellen. Android reaktivierte die Host Activity. iOS rekonstruiert die Capacitor Bridge View, sodass stattdessen ein neues WKWebView erzeugt 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/
Weiter mit der Verwendung von @capgo/capacitor-webview-crash
Wenn Sie die Verwendung von Die Verwendung von @capgo/capacitor-webview-crash um native Medien und Schnittstellenverhalten zu planen, verbinden Sie es mit @capgo/capacitor-webview-crash für die Implementierungsdetails in @capgo/capacitor-webview-crash Einführung für die Implementierungsdetails in Einführung Die Verwendung von @capgo/capacitor-live-activities für die native Fähigkeit in Verwendung von @capgo/capacitor-live-aktivitäten, @capgo/capacitor-live-aktivitäten für die Implementierungsdetail in @capgo/capacitor-live-aktivitäten und Verwendung von @capgo/capacitor-video-player für die native Fähigkeit in Verwendung von @capgo/capacitor-video-player.