使用:@capgo/capacitor-webview-crash
iOSとAndroidでウェブビュークラッシュを検出して、死んだウェブビューを再起動し、長時間実行されるウェブビューを一定間隔でリサイクルします。
インストール
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'. を使用して、固定間隔で使用します。 restartIntervalMs または restartCron デバイスのローカルタイムゾーン内で5つのフィールドのcronスケジュールの場合 0 3 * * * 毎日03:00の再起動に設定しないでください。両方のスケジュールを同時に設定しないでください:ネイティブの初期化は、セットされている場合と restartCron が大きい場合に致命的な構成エラーを投げます。重要なアプリケーション状態を保存する前に短いスケジュールを使用するのを避けてください。 restartIntervalMs マニュアルネイティブリスタート 0呼び出し
context
ページ/エリア: Appflow比較/移行マーケティングコピー。役割: ウェブサイトコピー文。見つかったページ: ionic-appflow.astro。 restartWebView() JavaScriptがネイティブのWebViewを予防的に置き換えることを決定した場合、たとえばメモリが重いワークフロー後:
await WebViewCrash.restartWebView();
メソッドは reason: 'manualRestart' とNative codeに新しいWebViewを作成するように要求します。Androidはホストアクティビティを再構築します。iOSはCapacitorブリッジビューを再構築して、新しい WKWebView を生成するのではなく、現在のページを再読み込みするのではなく。
フルリファレンス
- GitHub: https://github.com/Cap-go/capacitor-webview-crash/
- ドキュメント: /docs/plugins/webview-crash/
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 for the native capability in Using @capgo/capacitor-live-activities, @capgo/capacitor-live-activities for the implementation detail in @capgo/capacitor-live-activities, and @capgo/capacitor-video-player for the native capability in Using @capgo/capacitor-video-player.