メインコンテンツにスキップ
プラグインに戻る
@capgo/capacitor-webview-crash
チュートリアル
@capgo/capacitor-webview-crash

ウェブビューのクラッシュ

ウェブビューを再起動し、長時間実行中のウェブビューを一定間隔でリサイクルする

Capgoで__CAPGO_KEEP_0__を表示

ガイド

ウェブビュー クラッシュのチュートリアル

Download the Capgo app, then scan the QR code.

ウェブビュークラッシュ プラグイン プレビュー QR code

Using @capgo/capacitor-webview-crash

iOS と Android でウェブビュークラッシュを検出して、死んだウェブビューを再起動し、長時間実行中のウェブビューを一定間隔でリサイクルして、メモリ圧力がOOMになる前に

インストール

npm install @capgo/capacitor-webview-crash
npx cap sync

このプラグインが公開するもの

  • iOS と Android でウェブビュークラッシュ後にネイティブ再起動
  • キオスク、POS、サイン、スキャナー、ダッシュボードなどの長時間実行するアプリ用に、一定間隔でネイティブウェブビューをリスタート
  • restartWebView - JavaScript がページリロードなしで新しいネイティブウェブビューを要求できるようにします。
  • WebViewCrashPluginConfig - タイプ plugins.WebViewCrash オプション capacitor.config.ts.
  • getPendingCrashInfo オプションの null 何も待っていないとき。
  • clearPendingCrashInfo - アプリの状態が復元された後、保存されたマーカーをクリアします。
  • simulateCrashRecovery - ローカルでリカバリフローをテストするために、偽のクラッシュマーカーを作成します。
  • webViewRestoredAfterCrash - リカバリされたランタイム内でクラッシュマーカーがまだ待っている場合に発生するリスナーイベント。
  • webViewRestoredAfterRestart - ネイティブのリスタートマーカーがまだ待っている場合に発生するリスナーイベント。

例の使用方法

import { WebViewCrash } from '@capgo/capacitor-webview-crash';

await WebViewCrash.addListener('webViewRestoredAfterCrash', async (info) => {
  console.log('Recovered after a WebView crash', info);
  await WebViewCrash.clearPendingCrashInfo();
});

await WebViewCrash.addListener('webViewRestoredAfterRestart', async (info) => {
  console.log('Recovered after a native WebView restart', info);
  await WebViewCrash.clearPendingCrashInfo();
});

const pending = await WebViewCrash.getPendingCrashInfo();
// Note: the listener callback may have already cleared the pending marker.
if (pending.value) {
  console.log('Pending crash or restart marker', pending.value);
}

ネイティブの自動リスタート

リスタートの動作を設定するには capacitor.config.ts JavaScriptが利用できないときでも、機能を維持するために使用します:

import type { CapacitorConfig } from '@capacitor/cli';
import type { WebViewCrashPluginConfig } from '@capgo/capacitor-webview-crash';

const webViewCrash: WebViewCrashPluginConfig = {
  restartOnCrash: true,
  restartCron: '0 3 * * *',
  restartAfterCrashDelayMs: 0,
};

const config: CapacitorConfig = {
  plugins: {
    WebViewCrash: webViewCrash,
  },
};

export default config;

スケジュールされたリスタートは reason: 'periodicRestart'. fixed間隔または restartIntervalMs を使用します restartCron デバイスのローカルタイムゾーン内で5つのフィールドのcronスケジュールの場合 0 3 * * * 毎日03:00の再起動を設定しないでください。両方のスケジュールを同時に設定しないでください:ネイティブの初期化は、セットされている場合と restartCron が大きい場合に致命的な構成エラーを投げます。重要なアプリケーション状態を保存する前に短いスケジュールを使用しないでください。 restartIntervalMs 手動ネイティブ再起動 0JavaScriptがネイティブのWebViewを予防的に置き換えることを決定した場合、たとえばメモリ重いワークフロー後:

メソッドは

を書き込み、ネイティブの__CAPGO_KEEP_0__に新しいWebViewを作成するよう要求します。Androidはホストアクティビティを再構築します。iOSは__CAPGO_KEEP_1__ブリッジビューを再構築し、新しい restartWebView() を生成するのではなく、現在のページを再読み込みするのではなく。

await WebViewCrash.restartWebView();

フルリファレンス reason: 'manualRestart' and asks native code to create a fresh WebView. Android recreates the host activity. iOS rebuilds the Capacitor bridge view so a new WKWebView for a daily 03:00 restart. Do not configure both schedules at once: native initialization throws a fatal config error when

is set and

Keep going from Using @capgo/capacitor-webview-crash

Capacitor Webview Crash を使用している場合 Using @capgo/capacitor-webview-crash Capacitor Webview Crash を使用してネイティブメディアとインターフェイスの動作を計画する場合、Capacitor Webview Crash を使用して実装の詳細を確認してください。 @capgo/capacitor-webview-crash for the implementation detail in @capgo/capacitor-webview-crash, Capacitor Webview Crash を使用してネイティブメディアとインターフェイスの動作を計画する場合、Capacitor Webview Crash を使用して実装の詳細を確認してください。 Capacitor Webview Crash を使用してネイティブメディアとインターフェイスの動作を計画する場合、Capacitor Webview Crash を使用して実装の詳細を確認してください。 Using @capgo/capacitor-live-activities native capability in Using @capgo/capacitor-live-activities @capgo/capacitor-live-activities for the implementation detail in @capgo/capacitor-live-activities, and Using @capgo/capacitor-video-player for the native capability in Using @capgo/capacitor-video-player.