가이드
웹뷰 충돌 튜토리얼
Using @capgo/capacitor-webview-crash
데드 웹뷰 재시작 및 오래된 웹뷰 리사이클
데드 웹뷰 재시작 및 오래된 웹뷰 리사이클
npm install @capgo/capacitor-webview-crash
npx cap sync
설치하기
- iOS 및 Android에서 WebView 충돌 후 네이티브 재시작
- 일주일 이상 실행되는 카운터, POS, 디스플레이, 스캐너 및 대시보드 앱을 위한 고정 간격 네이티브 WebView 재시작
restartWebView- JavaScript가 페이지 리로드 없이 새로운 네이티브 WebView를 요청할 수 있습니다.WebViewCrashPluginConfig타입plugins.WebViewCrashoptioncapacitor.config.ts.getPendingCrashInfo- 저장된 네이티브 충돌 또는 재시작 마커를 반환하거나nullnothing이 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__:
- https://GitHub.com/Cap-go/__CAPGO_KEEP_1__-webview-crash/ https://github.com/Cap-go/capacitor-webview-crash/
- __CAPGO_KEEP_0__/__CAPGO_KEEP_1__-webview-crash를 사용하는 경우 계속하세요.
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 기능에 대해.