본문으로 바로가기
플러그인으로 돌아가기
@capgo/capacitor-webview-crash
튜토리얼
github.com/Cap-go에 의해

웹뷰 충돌

자연스럽게 재시작 된 웹뷰와 일정 간격으로 재활용 된 오랜 시간 동안 실행 된 웹뷰

가이드

웹뷰 충돌 튜토리얼

Using @capgo/capacitor-webview-crash

데드 웹뷰 재시작 및 오래된 웹뷰 리사이클

데드 웹뷰 재시작 및 오래된 웹뷰 리사이클

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 nothing이 pendig일 때
  • clearPendingCrashInfo - 앱이 상태를 복원한 후 저장된 마커를 삭제합니다.
  • simulateCrashRecovery - 로컬에서 회복 흐름을 테스트하기 위해 가짜 충돌 마커를 생성합니다.
  • webViewRestoredAfterCrash - 회복 런타임에서 충돌 마커가 pendig일 때 발생하는 리스너 이벤트
  • webViewRestoredAfterRestart - 네이티브 재시작 마커가 pendig일 때 발생하는 리스너 이벤트

사용 예

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 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 예를 들어 매일 03:00에 재시작합니다. 0 3 * * * 한 번에 두 가지 스케줄을 구성하지 마세요: restartCron 가 설정되어且 restartIntervalMs 보다 큰 경우 0단기 스케줄을 사용하기 전에 중요 앱 상태를 영구적으로 저장하세요.

수동 재시작

JavaScript가 네이티브 WebView를 미리 교체해야 하는지 결정할 때 호출됩니다. 예를 들어, 메모리 집약적인 워크플로우 후: restartWebView() 메소드는

await WebViewCrash.restartWebView();

네이티브 __CAPGO_KEEP_0__에게 새로운 WebView를 생성하라고 요청합니다. Android는 호스트 액티비티를 다시 생성하고 iOS는 __CAPGO_KEEP_1__ 브릿지 뷰를 다시 빌드하여 새로운 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 전체 참조

__CAPGO_KEEP_0__:

Keep going from Using @capgo/capacitor-webview-crash

Capacitor __CAPGO_KEEP_0__/__CAPGO_KEEP_1__-webview-crash를 사용합니다. capgo/capacitor-webview-crash를 사용합니다. native 미디어와 인터페이스 동작을 계획하기 위해, 그것을 @capgo/capacitor-webview-crash @capgo/capacitor-webview-crash 구현 세부 사항에 대해 Getting Started Getting Started 구현 세부 사항에 대해 @capgo/capacitor-live-activities @capgo/capacitor-live-activities의 native 기능에 대해 @capgo/capacitor-live-activities @capgo/capacitor-live-activities 구현 세부 사항에 대해, 그리고 Using @capgo/capacitor-video-player @capgo/capacitor-video-player의 native 기능에 대해.