跳过内容

@capgo/capacitor-webview-crash

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

本插件在前一个Capacitor WebView 进程死亡或被回收时存储一个本机标记,然后在应用程序恢复后将该标记暴露给下一个 JavaScript 运行时。它也可以在崩溃后、在固定的时间间隔内、在 cron 计划内或当 JavaScript 明确要求时重启 WebView 从本机code restartWebView()帮助 kiosk、POS、仪表盘、扫描器和显示器应用程序避免长时间会话期间的内存积累。

  • 本机崩溃重启 - 在 iOS 或 Android 上重启 WebView 当渲染进程死亡时。
  • 定时重启 - 使用本机计时器在长时间运行的 WebView 上进行回收, restartIntervalMs 或墙钟 restartCron.
  • 手动本机重启 - 允许 JavaScript 请求一个新的本机 WebView restartWebView() 而不需要进行页面重载。
  • 类型Capacitor 配置 - 暴露 WebViewCrashPluginConfig 用于 plugins.WebViewCrashcapacitor.config.ts.
  • getPendingCrashInfo - 返回存储的本机崩溃或重启标记,或者 null 当没有待处理的标记时。
  • clearPendingCrashInfo - 在应用程序恢复其状态后清除存储的标记。
  • simulateCrashRecovery - 创建一个虚拟崩溃标记,以便在本地测试恢复流程。
  • addListener - 触发 webViewRestoredAfterCrash 崩溃标记和 webViewRestoredAfterRestart 任何本机重启标记。

公共 API

公共API部分
方法描述
getPendingCrashInfo返回存储的本机崩溃或重启标记,或者 null 什么都没有在等待。
clearPendingCrashInfo清除应用程序恢复其状态后存储的标记。
simulateCrashRecovery创建一个虚假的崩溃标记,以便在本地测试恢复流程。
restartWebView写入 reason: 'manualRestart' 并要求本地code创建一个新的 WebView。
addListener触发 webViewRestoredAfterCrashwebViewRestoredAfterRestart 当一个监听器附加并匹配的标记仍在等待时。
removeAllListeners移除所有插件监听器。

该插件增强了Capacitor的 PluginsConfig 使用__CAPGO_KEEP_0__ 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 在 Android 上, restartIntervalMs 大于 0.
  • On Android,额外的字段,如 didCrashrendererPriorityAtExit 可能可用。
  • On iOS,插件记录 appState 当终止的 WebView 过程被观察到时。手动和预定重启重建Capacitor桥接视图,因此一个新的 WKWebView 创建了。

此参考是从 src/definitions.ts 同步的。 capacitor-webview-crash.

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

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

如果您正在使用 @capgo/capacitor-webview-crash 来规划原生媒体和界面行为,连接它与 使用 @capgo/capacitor-webview-crash for the native capability in Using @capgo/capacitor-webview-crash, 使用 @capgo/capacitor-webview-crash for the native capability in Using @capgo/capacitor-live-activities, 使用 @capgo/capacitor-live-activities for the implementation detail in @capgo/capacitor-live-activities, 使用@capgo/capacitor-视频播放器 为@capgo/capacitor-视频播放器的原生能力 使用@capgo/capacitor-视频播放器 为@capgo/capacitor-视频播放器的实现细节