クラッシュした 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- FireswebViewRestoredAfterCrashクラッシュマーカー用、およびwebViewRestoredAfterRestartネイティブの再起動マーカー用。
公開 API
「Public API」セクション| メソッド | 説明 |
|---|---|
getPendingCrashInfo | 保存されているネイティブのクラッシュまたは再起動マーカー、あるいは null 保留中のものがない場合に返します。 |
clearPendingCrashInfo | アプリが状態を復元した後、保存されているマーカーをクリアします。 |
simulateCrashRecovery | リカバリフローをローカルでテストするために、擬似的なクラッシュマーカーを作成します。 |
restartWebView | 書き込みを行い、 reason: 'manualRestart' ネイティブの code に新しいWebViewの作成をリクエストします。 |
addListener | イベントを発火させます。 webViewRestoredAfterCrash または webViewRestoredAfterRestart リスナーがアタッチされ、一致するマーカーがまだ保留中の場合に実行されます。 |
removeAllListeners | すべてのプラグインリスナーを削除します。 |
設定タイプ
「Config Type」セクションこのプラグインは 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が作成されます。
Source of Truth
「Source Of Truth」セクションこのリファレンスは以下から同期されています: src/definitions.ts における capacitor-webview-crash.
@capgo/capacitor-webview-crashの続き
「@capgo/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. の実装の詳細については