Mit @capgo/capacitor-webview-crash
Durch die Erkennung von wiederhergestellten WebView-Crashes, das nativ Neustarten toter WebViews und das Recycling von WebViews nach einer festen Zeit vor dem Umstieg in einen OOM.
Installieren
npm install @capgo/capacitor-webview-crash
npx cap sync
Was dieses Plugin bereitstellt
- Natives Neustarten nach WebView-Crashes auf iOS und Android.
- Festzeitintervall-basiertes nativ Neustarten von WebViews für kiosk-, POS-, Signage-, Scanner- und Dashboard-Anwendungen, die Tage laufen.
restartWebView- Lassen Sie JavaScript ein frisches natives WebView ohne Seitenaufruf anfordern.WebViewCrashPluginConfig- Typenplugins.WebViewCrashOptionen incapacitor.config.ts.getPendingCrashInfo- Gibt die gespeicherte native Crash- oder Neustartenmarke zurück, odernullwenn nichts mehr ausstehend ist.clearPendingCrashInfo- Löscht den gespeicherten Marker nachdem sich die App wieder in ihren Zustand zurückgesetzt hat.simulateCrashRecovery- Erstellt einen fiktiven Crash-Marker, um lokale Recovery-Flows testen zu können.webViewRestoredAfterCrash- Listener-Event wird ausgelöst, wenn ein Crash-Marker noch ausstehend ist in der wiederhergestellten Runtime.webViewRestoredAfterRestart- Listener-Event wird ausgelöst, wenn ein beliebiger Native-Restart-Marker noch ausstehend 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 Wiederherstellungsverhalten in capacitor.config.ts damit es weiterhin funktioniert, 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 Wiederherstellungen schreiben reason: 'periodicRestart'. Verwenden Sie restartIntervalMs für festgelegte Intervalle oder restartCron für ein 5-Felder-Cron-Schema im Gerätezeitzone, wie 0 3 * * * für einen täglichen Neustart um 03:00 Uhr. Konfigurieren Sie beide Schemas nicht gleichzeitig: Die native Initialisierung wirft einen fatalen Konfigurationsfehler, wenn restartCron eingesetzt ist und restartIntervalMs größer ist als 0. Persistieren Sie kritische Anwendungsstatus, bevor Sie kurze Schemas verwenden.
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, ein frisches WebView zu erstellen. Android reaktivierte die Hostaktivität. iOS rekonstruiert die Capacitor Bridgeansicht, sodass 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 und zu verbinden, 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.