@capgo/capacitor-webview-crash verwenden
Erkennen Sie wiederhergestellte WebView-Crashes, 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 diese Erweiterung enthüllt
- Natives Neustart nach WebView-Crashes auf iOS und Android.
- Festintervall-Neustart des nativen WebViews für Kiosk-, POS-, Signage-, Scanner- und Dashboard-Anwendungen, die Tage laufen.
restartWebView- Lassen Sie JavaScript einen frischen nativen WebView anfordern, ohne eine Seite neu zu laden.WebViewCrashPluginConfigTypenplugins.WebViewCrashOptionen incapacitor.config.ts.getPendingCrashInfo- Gibt den gespeicherten native Crash- oder Neustartmarker zurück, odernullwenn nichts anhängt.clearPendingCrashInfo- Löscht den gespeicherten Marker nach Wiederherstellung des Zustands Ihres Apps.simulateCrashRecoveryErstellt einen fiktiven Crash-Marker, um lokale Recovery-Flows zu testen.webViewRestoredAfterCrashListenerereignis wird ausgelöst, wenn ein Crashmarker im wiederhergestellten Runtime noch nicht abgeschlossen ist.webViewRestoredAfterRestart- Listener Ereignis ausgelöst, wenn jede native Neustartmarke noch ausstehend ist.
Beispielanwendung
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 Schemas gleichzeitig: Die native Initialisierung wirft einen fatalen Konfigurationsfehler, wenn restartCron eingesetzt ist und restartIntervalMs ist größer als 0ist. Persistieren Sie kritische Anwendungsdaten, bevor Sie kurze Schedules verwenden.
Manuelle Native Neustart
Anrufen restartWebView() Wenn JavaScript entscheidet, dass die native WebView vorab ersetzt werden soll, 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 Bridgeansicht, sodass eine neue 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/
Fortsetzen von Verwendung von @capgo/capacitor-webview-crash
Wenn Sie die Mit @capgo/capacitor-webview-crash um native Medien und Schnittstellenverhalten zu planen und es mit @capgo/capacitor-WebView-Crash für die Implementierungsdetails in @capgo/capacitor-webview-crash Getting Started 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-aktivitäten 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