메인 콘텐츠로 건너뛰기
플러그인으로 돌아가기
@capgo/capacitor-webview-crash
튜토리얼
@capgo/capacitor-webview-crash

웹뷰 충돌

웹뷰를 재시작하고 오랜 시간 동안 실행되는 웹뷰를 일정 간격으로 재활용합니다.

Capgo Live Update에 대한 문서를 보려면 여기를 클릭하세요.

소스 코드 보기

웹뷰 충돌에 대한 튜토리얼

Download the Capgo app, then scan the QR code.

웹뷰 충돌 플러그인 미리보기 QR code

Using @capgo/capacitor-webview-crash

iOS와 Android에서 웹뷰 충돌을 감지하고, 죽은 웹뷰를 재시작하고, 일정 간격으로 오래 실행되는 웹뷰를 재활용하여 메모리 압박이 OOM으로 변하지 않도록 합니다.

설치

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

이 플러그인이 제공하는 내용

  • iOS와 Android에서 웹뷰 충돌 후 네이티브 재시작
  • 일정 간격으로 네이티브 웹뷰 재시작을 사용하는 키오스크, POS, 시그니처, 스캐너, 데스크탑 앱을 위한 플러그인
  • restartWebView - 자바스크립트가 페이지 리로드 없이 새로운 네이티브 웹뷰를 요청할 수 있습니다.
  • WebViewCrashPluginConfig - 종류 plugins.WebViewCrash option in capacitor.config.ts.
  • getPendingCrashInfo - 저장된 네이티브 충돌 또는 재시작 마커를 반환합니다. null nothing이 pending되지 않을 때.
  • clearPendingCrashInfo - 앱이 상태를 복원한 후 저장된 마커를 삭제합니다.
  • simulateCrashRecovery - 로컬에서 복구 흐름을 테스트할 수 있도록 가짜 충돌 마커를 생성합니다.
  • webViewRestoredAfterCrash - 복구 런타임에서 충돌 마커가 여전히 pending 상태일 때 발생하는 리스너 이벤트.
  • webViewRestoredAfterRestart - 네이티브 재시작 마커가 여전히 pending 상태일 때 발생하는 리스너 이벤트.

예시 사용

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

네이티브 자동 재시작

다음과 같이 재시작 동작을 구성하여 JavaScript가 사용할 수 없을 때도 계속 작동하도록 합니다: 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'fixed intervals or restartIntervalMs scheduled restarts write restartCron 기기 로컬 타임존에서 5 필드 크론 스케줄을 위해 0 3 * * * 일일 03:00 재시작을 위해. native 초기화는 동시에 두 가지 스케줄을 구성하지 마십시오: native 초기화는 __CAPGO_KEEP_0__가 설정되어 있고 __CAPGO_KEEP_1__보다 클 때 치명적인 config 오류를 발생시킵니다. restartCron __CAPGO_KEEP_0__가 설정되어 있고 __CAPGO_KEEP_1__보다 클 때 restartIntervalMs __CAPGO_KEEP_1__보다 클 때 0. 중요한 앱 상태를 영구적으로 저장하기 전에 짧은 스케줄을 사용하지 마십시오.

수동 네이티브 리스타트

JavaScript가 네이티브 WebView를 미리 교체하기로 결정했을 때, 예를 들어 메모리 집약적인 워크플로우 후: restartWebView() 메서드는 __CAPGO_KEEP_0__을 생성하는 새로운 WebView를 만들도록 native __CAPGO_KEEP_1__에게 요청합니다. Android는 호스트 액티비티를 재생성하고 iOS는 __CAPGO_KEEP_1__ 브리지를 다시 빌드하여 새로운 __CAPGO_KEEP_1__을 생성합니다.

await WebViewCrash.restartWebView();

Full Reference 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 Appflow 비교/마이그레이션 마케팅 복사본

Appflow 마이그레이션 Step2

Using @capgo/capacitor-webview-crash

이 플러그인을 사용하는 경우 Using @capgo/capacitor-webview-crash __CAPGO_KEEP_0__와 연결하여 capgo/capacitor-webview-crash의 구현 세부 정보 for the implementation detail in @capgo/capacitor-webview-crash, Getting Started의 구현 세부 정보 Using @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-live-activities Using @capgo/capacitor-live-activities Capgo의 @capgo/capacitor-live-활동을 위해 @capgo/capacitor-live-활동 Capgo의 @capgo/capacitor-live-활동 구현 세부 사항 Capgo의 @capgo/capacitor-비디오 플레이어를 사용하여 Capgo의 @capgo/capacitor-비디오 플레이어의 원시 기능을 위해