跳过内容

@capgo/capacitor-webview-crash

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

此插件在前一个 Capacitor WebView 进程死亡或被回收时存储一个本机标记,然后在应用恢复后将该标记暴露给下一个 JavaScript 运行时。它还可以在崩溃后从本机 code 重启 WebView,或者在固定间隔、cron 计划或 JavaScript 明确请求时重启。 restartWebView()核心功能

帮助长时间运行的 kiosk、POS、仪表板、扫描器和标牌应用避免内存积累的插件。

Core Capabilities
  • 原生崩溃重启 - 当渲染进程死亡时,使用 iOS 或 Android 重启 WebView。
  • 预定重启 - 使用原生定时器或时钟周期来回收长时间运行的 WebView。 restartIntervalMsrestartCron.
  • 手动原生重启 - 允许 JavaScript 请求一个新的原生 WebView restartWebView() 而不需要重新加载页面。
  • 类型的Capacitor配置 - expose WebViewCrashPluginConfig 用于 plugins.WebViewCrashcapacitor.config.ts.
  • getPendingCrashInfo 获取存储的原生崩溃或重启标记,或者 null 当没有任何待处理的任务时返回 null。
  • clearPendingCrashInfo 清除存储的标记后恢复应用状态。
  • simulateCrashRecovery - 创建一个模拟崩溃标记符,以便在本地测试恢复流程。
  • addListener - 触发 webViewRestoredAfterCrash 崩溃标记符和 webViewRestoredAfterRestart 任何本机重启标记。
方法描述
getPendingCrashInfo返回存储的本机崩溃或重启标记,或者 null 当没有任何标记时返回空值。
clearPendingCrashInfo清除存储的标记后,应用程序恢复其状态。
simulateCrashRecovery创建一个模拟崩溃标记符,以便在本地测试恢复流程。
restartWebView写入 reason: 'manualRestart' 并要求本地code创建一个新的WebView。
addListener触发 webViewRestoredAfterCrashwebViewRestoredAfterRestart 当一个监听器附加并且一个匹配的标记仍在等待时。
removeAllListeners移除所有插件监听器。

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

export interface WebViewCrashPluginConfig {
restartOnCrash?: boolean;
restartIntervalMs?: number;
restartCron?: string;
restartAfterCrashDelayMs?: number;
}
  • 此插件检测WebView崩溃后的恢复。它不会阻止底层崩溃。
  • 恢复的JavaScript运行时是新的,因此在此API触发时,之前的WebView中的内存状态已经丢失了。
  • 预定重启写入 reason: 'periodicRestart';手动重启写入 reason: 'manualRestart'.在启用短重启间隔、cron计划或调用 restartWebView().
  • restartCron 使用设备本地时区中的5个字段cron语法,例如 0 3 * * * 为每天03:00重启。不要同时配置两个计划:native初始化会抛出一个致命配置错误,当 restartCron 设置且 restartIntervalMs 大于 0.
  • 在Android上,额外的字段,如 didCrash 并且 rendererPriorityAtExit 可能可用。
  • 在 iOS 上,插件记录 appState 当终止的 WebView 过程被观察到时。手动和计划重启重建了Capacitor桥视图,因此创建了一个新的 WKWebView 真实来源

标题:真实来源

这个参考是从

src/definitions.ts __CAPGO_KEEP_0__-webview-crash 继续从 @capacitor/__CAPGO_KEEP_1__-webview-crash.

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

Section titled “Keep going from @capgo/capacitor-webview-crash”

If you are using @capgo/capacitor-webview-crash 用于规划原生媒体和界面行为,连接它与 使用 @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 {"targetLanguage":"Simplified Chinese","pagePath":"/zh/docs/plugins/webview-crash/","protectedTokens":["Cloudflare","Capacitor","GitHub","Capgo","code","API","SDK","CLI","npm","bun"],"items":[{"text":"@capgo/capacitor视频播放器的实现细节"},{"text":"编辑页面"}]}