メインコンテンツへスキップ

@capgo/capacitor-webview-crash

クラッシュした WebView をネイティブで再起動し、長時間実行中の WebView を一定間隔でリサイクルします

クラッシュした WebView をネイティブで再起動し、長時間実行中の WebView を一定間隔でリサイクルします

まずはこちらから getPendingCrashInfo() および以下に示すその他のコアメソッド。

プラットフォームサポート備考
iOSとはいネイティブ
Androidはいネイティブ
Web一部はじめにを見る
  • ネイティブクラッシュ時の再起動 - レンダラープロセスが終了した際、iOS または Android から WebView を再起動します。
  • スケジュールされた再起動 - ネイティブタイマーを使用して、長時間実行中のWebViewをリサイクルします。 restartIntervalMs またはウォールクロック restartCron.
  • 手動ネイティブ再起動 - JavaScriptから新しいネイティブWebViewを次の方法で要求できます: restartWebView() ページをリロードせずに。
  • 型付き Capacitor 設定 - 公開 WebViewCrashPluginConfig を plugins.WebViewCrash における capacitor.config.ts.
  • getPendingCrashInfo - 保存されているネイティブのクラッシュまたは再起動マーカーを返します。または、 null 保留中のものがない場合に返されます。
  • clearPendingCrashInfo - アプリが状態を復元した後、保存されているマーカーをクリアします。
  • simulateCrashRecovery - リカバリフローをローカルでテストするために、擬似的なクラッシュマーカーを作成します。
  • addListener - Fires webViewRestoredAfterCrash クラッシュマーカー用、および webViewRestoredAfterRestart ネイティブの再起動マーカー用。
メソッド説明
getPendingCrashInfo保存されているネイティブのクラッシュまたは再起動マーカー、あるいは null 保留中のものがない場合に返します。
clearPendingCrashInfoアプリが状態を復元した後、保存されているマーカーをクリアします。
simulateCrashRecoveryリカバリフローをローカルでテストするために、擬似的なクラッシュマーカーを作成します。
restartWebView書き込みを行い、 reason: 'manualRestart' ネイティブの code に新しいWebViewの作成をリクエストします。
addListenerイベントを発火させます。 webViewRestoredAfterCrash または webViewRestoredAfterRestart リスナーがアタッチされ、一致するマーカーがまだ保留中の場合に実行されます。
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 initialization で致命的な設定エラーが発生します。 restartCron かつ restartIntervalMs が 0.
  • より大きい場合、ネイティブの初期化時に致命的な設定エラーが発生します。Androidでは、 didCrash と rendererPriorityAtExit などの追加フィールドが利用可能な場合があります。
  • iOSでは、プラグインは終了したWebViewプロセスが appState されたときに記録します。手動またはスケジュールされた再起動では Capacitor ブリッジビューが再構築されるため、新しい WKWebView が作成されます。

このリファレンスは以下から同期されています: src/definitions.ts における capacitor-webview-crash.

使用している場合 @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 @capgo/capacitor-video-player. の実装の詳細については