본문으로 바로가기
플러그인으로 돌아가기
@capgo/capacitor-webview-crash
튜토리얼
@capgo/capacitor-webview-crash

웹뷰 충돌

__CAPGO_KEEP_0__를 재시작하고 고정 간격으로 오래된 WebView를 재활용하여 네이티브로 충돌한 WebView를 재시작합니다.

가이드

WebView 충돌에 대한 튜토리얼

@capgo/capacitor-webview-crash를 사용하여 WebView 충돌을 감지하고 네이티브로 죽은 WebView를 재시작하고 고정 간격으로 오래된 WebView를 재활용합니다.

메모리 압박이 OOM으로 변할 때까지 충돌한 WebView를 재시작하고 네이티브로 죽은 WebView를 재시작하고 고정 간격으로 오래된 WebView를 재활용합니다.

설치

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

이 플러그인은 다음을 제공합니다.

  • iOS 및 Android에서 WebView 충돌 후 네이티브 재시작
  • 일주일 이상 실행하는 키오스크, POS, 디스플레이, 스캐너 및 대시보드 앱을 위한 고정 간격 네이티브 WebView 재시작
  • restartWebView - JavaScript가 페이지 리로드 없이 새로운 네이티브 WebView를 요청할 수 있습니다.
  • WebViewCrashPluginConfig 타입 plugins.WebViewCrash option capacitor.config.ts.
  • getPendingCrashInfo - 네이티브 충돌 또는 재시작 마커가 저장되어 있는지, 또는 null - 마커가 없을 때 반환됩니다.
  • clearPendingCrashInfo - 앱이 상태를 복원한 후 마커를 지웁니다.
  • simulateCrashRecovery - 로컬에서 회복 흐름을 테스트할 수 있도록 가짜 충돌 마커를 생성합니다.
  • webViewRestoredAfterCrash - 충돌 마커가 복원된 런타임에서 여전히 대기 중일 때 발생하는 리스너 이벤트
  • webViewRestoredAfterRestart - __CAPGO_KEEP_0__ 이벤트가 발생할 때 JavaScript가 사용할 수 없는 경우에도 계속 작동하도록 하기 위해 __CAPGO_KEEP_1__ 설정을 구성하세요.

예시 사용

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);
}

자연어 자동 재시작

__CAPGO_KEEP_2__에서 __CAPGO_KEEP_3__을 구성하여 capacitor.config.ts 일정 간격으로 __CAPGO_KEEP_4__ 또는

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;

__CAPGO_KEEP_5__을 사용하여 장치 로컬 시간대에서 5 필드 크론 스케줄을 설정하세요. 예를 들어 매일 03:00에 재시작합니다. reason: 'periodicRestart'__CAPGO_KEEP_6__을 설정하면 __CAPGO_KEEP_7__이 __CAPGO_KEEP_8__보다 클 때 __CAPGO_KEEP_9__이 발생합니다. restartIntervalMs __CAPGO_KEEP_10__ restartCron __CAPGO_KEEP_11__ 0 3 * * * __CAPGO_KEEP_12__ restartCron __CAPGO_KEEP_13__ restartIntervalMs __CAPGO_KEEP_14__ 0. 앱의 중요한 상태를 저장하기 전에 짧은 스케줄을 사용하지 마십시오.

수동 네이티브 재시작

Call restartWebView() JavaScript가 네이티브 WebView를 미리 교체해야 할 때, 예를 들어 메모리 집약적인 워크플로우 후에:

await WebViewCrash.restartWebView();

이 메소드는 reason: 'manualRestart' 네이티브 code에게 새로운 WebView를 만들 것을 요청합니다. Android는 호스트 활동을 재생성합니다. iOS는 Capacitor 브릿지 뷰를 재빌드하여 새로운 WKWebView 이 대신 현재 페이지를 다시 로드하지 않습니다.

전체 참조

Using @capgo/capacitor-webview-crash

만약에 Using @capgo/capacitor-webview-crash native 미디어와 인터페이스 동작을 계획하고 싶다면 @capgo/capacitor-webview-crash @capgo/capacitor-webview-crash Getting Started Getting Started Using @capgo/capacitor-live-activities Using @capgo/capacitor-live-activities @capgo/capacitor-live-activities Using @capgo/capacitor-video-player Using @capgo/capacitor-video-player for the native capability in Using @capgo/capacitor-video-player.