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

ウェブビュークラッシュ

クラッシュしたウェブビューを再起動し、一定時間ごとに長時間実行されているウェブビューをリサイクルする

ガイド

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

デバイスでテスト

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

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

@capgo/capacitor-webview-crash を使用

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

インストール

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

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

  • iOS と Android で WebView がクラッシュした後、ネイティブの再起動
  • 日単位で稼働するキオスク、POS、ディスプレイ、スキャナーアプリケーション向けの固定間隔のネイティブ WebView リスタート
  • restartWebView - JavaScript がページリロードなしで新しいネイティブ WebView を要求します。
  • WebViewCrashPluginConfig - 型 plugins.WebViewCrash オプション capacitor.config.ts.
  • getPendingCrashInfo - null ストレージされたネイティブのクラッシュまたはリスタートマーカーを返します、または
  • clearPendingCrashInfo 何も保留されていない場合。
  • simulateCrashRecovery - ストレージされたマーカーをクリアして、再度アプリの状態を復元した後
  • webViewRestoredAfterCrash - ローカルでテストするために、リカバリフローのテストに使用できるように、偽のクラッシュマーカーを作成します。
  • webViewRestoredAfterRestart - __CAPGO_KEEP_0__イベントが発生したときに、JavaScriptが利用できない場合に動作を維持するために設定されたすべてのネイティブ再起動マーカーがまだ保留中である場合に発生します。

例として使用する

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 の5つのフィールドのcronスケジュールで、デバイスのローカルタイムゾーン内で、たとえば restartCron の毎日03:00の再起動を設定します。両方のスケジュールを同時に設定しないでください:ネイティブの初期化は、 0 3 * * * が設定されている場合と restartCron が0より大きい場合に致命的な構成エラーを投げます。 restartIntervalMs __CAPGO_KEEP_0__ 0. アプリの重要な状態を短いスケジュールの前に保存してください。

Manual Native Restart

Call restartWebView() JavaScriptがネイティブのWebViewを予防的に置き換えることを決定したとき、たとえばメモリが重いワークフロー後など:

await WebViewCrash.restartWebView();

このメソッドは reason: 'manualRestart' ネイティブのcodeに新しいWebViewを作成するよう依頼します。Androidはホストアクティビティを再作成します。iOSはCapacitorブリッジビューを再構築し、代わりに現在のページを再読み込みするのではなく、新しい WKWebView Full Reference

__CAPGO_KEEP_0__:

https://capgo.com/Cap-go/capacitor-webview-crash/

あなたが @capgo/capacitor-webview-crash を使用してネイティブメディアとインターフェイスの動作を計画する場合、@__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-webview-crash @capgo/capacitor-webview-crash @capgo/capacitor-webview-crash の実装詳細については、@__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-webview-crash を参照してください。 Using @capgo/capacitor-live-activities for the native capability in Using @capgo/capacitor-live-activities, @capgo/capacitor-live-activities Using @capgo/capacitor-live-activities を使用してネイティブ機能を実装する場合、Using @capgo/capacitor-live-activities、 @capgo/capacitor-video-playerのネイティブ機能のために