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

ウェブビュー クラッシュ

ウェブビューがクラッシュした場合に再起動し、長時間実行中のウェブビューを一定間隔でリサイクルする

ガイド

WebView Crashのチュートリアル

デバイスでテスト

Capgoアプリをダウンロードし、QRコードをcodeでスキャンしてください。

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

使用方法:@capgo/capacitor-webview-crash

ウェブビューの回復を検出して、iOSとAndroidで死んだWebビューを再起動し、長時間実行されるWebビューを一定間隔で再起動して、メモリ圧力がOOMになる前に回復します。

インストール

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

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

  • iOSとAndroidでウェブビュークラッシュ後にネイティブ再起動
  • 長時間実行されるキオスク、POS、サイン、スキャナー、ダッシュボードアプリ用の固定間隔のネイティブWebビュー再起動
  • restartWebView - JavaScriptがページリロードなしで新しいネイティブWebビューを要求できるようにします。
  • 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'固定間隔または restartIntervalMs を使用して定期的に実行します。 restartCron デバイスのローカルタイムゾーン内で5つのフィールドのcronスケジュールの場合 0 3 * * * 毎日03:00に再起動する。両方のスケジュールを同時に設定しないでください: restartCron native initialization restartIntervalMs fatal config error 0がセットされ

より大きい場合、native initialization restartWebView() fatal config error

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 JavaScriptがネイティブのWebViewを予防的に置き換える必要がある場合、たとえばメモリが重いワークフロー後:

メソッドは

@capgo/capacitor-webview-crashを使用し続ける

Capgoを使用している場合 Using @capgo/capacitor-webview-crash Capgoを使用し、 @capgo/capacitor-webview-crash @capgo/capacitor-live-activitiesを使用し、 Getting Started Getting Startedの実装詳細 Capgoを使用し、@capgo/capacitor-live-activitiesを使用する native機能の使用に@capgo/capacitor-live-activitiesを使用します。 @capgo/capacitor-live-activities 実装詳細のために@capgo/capacitor-live-activitiesを使用します。 Using @capgo/capacitor-video-player native機能の使用に@capgo/capacitor-video-playerを使用します。