@capgo/capacitor-webview-crash verwenden
Detektieren Sie wiederhergestellte WebView-Crashs, starten Sie tote WebViews nativ neu 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 offenlegt
- Natives Neustart nach WebView-Crashs auf iOS und Android.
- Festintervall-Natives-WebView-Neustart für Kiosk-, POS-, Signage-, Scanner- und Dashboard-Anwendungen, die Tage laufen.
restartWebView- Lassen Sie JavaScript einen frischen nativen WebView ohne Seitenaufruf anfordern.WebViewCrashPluginConfig- Typenplugins.WebViewCrashEinstellungen incapacitor.config.ts.getPendingCrashInfo- Gibt die gespeicherte native Crash- oder Neustartmarke zurück, odernull- Löschte die gespeicherte Marke, nachdem Ihre App ihren Zustand wiederhergestellt hat.clearPendingCrashInfo- Erstellt eine fiktive Crashmarke, damit Recovery-Flows lokal getestet werden können.simulateCrashRecovery- Ereignis, das ausgelöst wird, wenn eine Crashmarke noch im Wartestand ist, nachdem die Runtime wiederhergestellt wurde.webViewRestoredAfterCrash- Ereignis, das ausgelöst wird, wenn eine native Neustartmarke noch im Wartestand ist.webViewRestoredAfterRestartBeispiel für die Verwendung
Nativ Auto Neustart
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);
}
Konfigurieren Sie das Neustartern in
so dass es weiterhin funktioniert, wenn JavaScript nicht verfügbar ist: capacitor.config.ts Scheduled Neustarts schreiben
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;
Einstellungen in reason: 'periodicRestart'. Verwenden 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 Schemas gleichzeitig: Die native Initialisierung wirft einen fatalen Konfigurationsfehler, wenn restartCron eingesetzt ist und restartIntervalMs größer als 0ist. Speichern Sie kritische Anwendungsstatus vor der Verwendung kurzer Schemas.
Manueller Native Neustart
wenn JavaScript entscheidet, dass der native WebView vorzeitig ersetzt werden soll, z.B. nach einem memory-intensiven Workflow: restartWebView() Die Methode schreibt
await WebViewCrash.restartWebView();
und fragt den native __CAPGO_KEEP_0__ an, einen frischen WebView zu erstellen. Android reaktivierte die Hostaktivität. iOS rekonstruiert die __CAPGO_KEEP_1__ Bridgeansicht, um eine neue 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 wird stattdessen anstelle einer Neuladung der aktuellen Seite erstellt.
Vollständige Referenz
- GitHub: https://github.com/Cap-go/capacitor-webview-crash/
- Dokumentation: /docs/plugins/webview-crash/
Fahren Sie mit dem Lesen von Verwendung von @capgo/capacitor-webview-crash
Wenn Sie @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-webview-crash verwenden Verwendung von @capgo/capacitor-webview-crash Um native Medien und Schnittstellenverhalten zu planen und zu verbinden, verwenden Sie @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-webview-crash Verbinden Sie @capgo/capacitor-webview-crash mit der Implementierungsdetail in @capgo/capacitor-webview-crash for the implementation detail in @capgo/capacitor-webview-crash, Fahren Sie mit dem Lesen von Verwendung von @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-webview-crash für die Implementierungsdetails in Getting Started Mit @capgo/capacitor-live-aktivitäten für die native Fähigkeit in Mit @capgo/capacitor-live-aktivitäten @capgo/capacitor-live-aktivitäten für die Implementierungsdetails in @capgo/capacitor-live-aktivitäten und Mit @capgo/capacitor-video-player für die native Fähigkeit in Mit @capgo/capacitor-video-player