跳过内容

@capgo/capacitor-webview-crash

Capacitor长时间运行应用的原生WebView崩溃恢复、手动重启和定期WebView回收。

概述

概述

This plugin stores a native marker when the previous Capacitor WebView process dies or is recycled, then exposes that marker to the next JavaScript runtime after the app recovers. It can also restart the WebView from native code after a crash, on a fixed interval, on a cron schedule, or when JavaScript explicitly requests restartWebView()这有助于避免长时间会话期间的内存积累,适用于 kiosk、POS、仪表盘、扫描器和标牌应用

  • __CAPGO_KEEP_1__
  • 定时重启 - 使用本机定时器在长时间运行的 WebView 上循环 restartIntervalMs 或墙钟 restartCron.
  • 手动本机重启 - 让 JavaScript 请求一个新的本机 WebView restartWebView() 而不进行页面重载。
  • 类型 Capacitor 配置 - exposing WebViewCrashPluginConfig 用于 plugins.WebViewCrashcapacitor.config.ts.
  • getPendingCrashInfo - 返回存储的本机崩溃或重启标记,或者 null 当没有任何标记时。
  • clearPendingCrashInfo - 在应用程序恢复其状态后清除存储的标记。
  • simulateCrashRecovery - 创建一个模拟崩溃标记,以便在本地测试恢复流程。
  • addListener - 触发 webViewRestoredAfterCrash 用于崩溃标记和 webViewRestoredAfterRestart 用于任何本机重启标记。
方法描述
getPendingCrashInfo返回存储的本机崩溃或重启标记,或者 null 当没有待处理的标记时。
clearPendingCrashInfo清除存储的标记后,应用程序恢复其状态。
simulateCrashRecovery创建一个虚拟崩溃标记,以便在本地测试恢复流程。
restartWebView写入 reason: 'manualRestart' 并要求本机 code 创建一个新的 WebView。
addListener Fires webViewRestoredAfterCrashwebViewRestoredAfterRestart 当一个监听器附加并且一个匹配的标记仍在等待时
removeAllListeners移除所有插件监听器

配置类型

配置类型

该插件增强了Capacitor的 PluginsConfig 具有类型的 WebViewCrash 配置项:

export interface WebViewCrashPluginConfig {
restartOnCrash?: boolean;
restartIntervalMs?: number;
restartCron?: string;
restartAfterCrashDelayMs?: number;
}

注意

注意
  • 本插件检测WebView崩溃后的恢复。它不会阻止底层崩溃。
  • 恢复的JavaScript运行时是新的,所以在WebView崩溃后,任何内存中的状态都已经丢失了,当这个API触发时。
  • 预定重启写 reason: 'periodicRestart';手动重启写 reason: 'manualRestart'. 在启用短重启间隔、cron调度或调用之前,保存未保存的状态。 restartWebView().
  • restartCron 使用设备本地时区的5个字段的cron语法,例如 0 3 * * * 每天03:00重启。不要同时配置两个调度:native初始化会抛出一个致命配置错误,当 restartCron 设置且 restartIntervalMs 大于 0.
  • . didCrash 在Android上,额外的字段,如 rendererPriorityAtExit
  • On iOS,插件记录 appState 当终止的 WebView 过程被观察到时。手动和预定的重启重建了 Capacitor 桥接视图所以一个新的 WKWebView 是创建的。

这个参考是从 src/definitions.tscapacitor-webview-crash.

从 @capgo/capacitor-webview-crash 中继续

标题:从 @capgo/capacitor-webview-crash 中继续

如果您正在使用 @capgo/capacitor-webview-crash To plan native media and interface behavior, connect it with 使用 @capgo/capacitor-webview-crash 为 @capgo/capacitor-webview-crash 的原生能力 使用 @capgo/capacitor-live-activities 为 @capgo/capacitor-live-activities 的原生能力 @capgo/capacitor-live-activities 为 @capgo/capacitor-live-activities 的实现细节 使用 @capgo/capacitor-video-player 为使用 @capgo/capacitor-video-player 的原生能力 @capgo/capacitor-video-player 为 @capgo/capacitor-video-player 的实现细节