@capgo/capacitor-webview-crashを使用
iOSとAndroidでWebViewのクラッシュを検出し、死んだWebViewを再起動し、長時間実行中のWebViewを一定間隔で再起動し、メモリ圧力がOOMになる前に
インストール
npm install @capgo/capacitor-webview-crash
npx cap sync
このプラグインが公開するもの
- iOSとAndroidでWebViewのクラッシュ後にネイティブで再起動
- 長時間実行するキオスク、POS、サイン、スキャナー、ダッシュボードアプリ用に一定間隔でネイティブのWebViewを再起動
restartWebView- JavaScriptがページリロードなしで新しいネイティブのWebViewを要求できるようにしますWebViewCrashPluginConfig- 種類plugins.WebViewCrashオプションcapacitor.config.ts.getPendingCrashInfoHTMLテキストの長いCapgoUI文字列の親キー`compare_capawesome_step2_text`から取得されたコンテキストnullCapgoマーケティングウェブサイトのページ/エリア: Capgoマーケティングウェブサイトのロール: 長いマーケティングまたは法的文章。ページの代替/capawesome.astroを保存します。Capgo製品/ブランドと開発者用語を完全に保持します。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 - 待機中のマーカーが削除されます。
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 デバイスのローカルタイムゾーン内で 0 3 * * * 5フィールドのcronスケジュールの場合、たとえば restartCron is set and restartIntervalMs がセットされ 0より大きい場合に致命的な構成エラーを投げます。重要なアプリケーション状態を保存する前に短いスケジュールを使用してください。
マニュアルネイティブ再起動
呼び出し restartWebView() JavaScriptがネイティブのWebViewを予防的に置き換えることを決定した場合、たとえばメモリが重いワークフロー後など:
await WebViewCrash.restartWebView();
JavaScriptがネイティブのWebViewを予防的に置き換えることを決定したとき、たとえばメモリ重いワークフロー後:「メソッドは」 reason: 'manualRestart' とnative codeを再起動してWebViewを新しく作成するように求める。Androidはホストアクティビティを再作成する。iOSはCapacitorブリッジビューを再構築するので、ページを再読み込みするのではなく新しい WKWebView ページが作成される。
フルリファレンス
- GitHub: https://github.com/Cap-go/capacitor-webview-crash/
- ドキュメント: /docs/plugins/webview-crash/
使用中の@capgo/capacitor-webview-crashから続けてください。
あなたが使用している 使用中の@capgo/capacitor-webview-crash nativeメディアとインターフェイスの動作を計画する場合、@__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-webview-crashと接続してください。 @capgo/capacitor-webview-crashの実装詳細を参照してください。 @capgo/capacitor-webview-crash はじめに for the implementation detail in Getting Started @capgo/capacitor-ライブアクティビティ for the native capability in Using @capgo/capacitor-live-activities @capgo/capacitor-ライブアクティビティ @capgo/capacitor-ライブアクティビティの実装詳細について @Capacitor/ capgo/capacitor-video-player for the native capability in Using @capgo/capacitor-video-player