@capgo/capacitor-webview-crash 사용
웹뷰 충돌을 감지하고 죽은 웹뷰를 재시작하고, 메모리 압박이 OOM이 될 때까지 정해진 간격으로 오래된 웹뷰를 재활용합니다.
설치
npm install @capgo/capacitor-webview-crash
npx cap sync
이 플러그인은 다음을 제공합니다.
- iOS 및 Android에서 WebView가 충돌했을 때 Native 재시작
- 일주일 이상 실행되는 키오스크, POS, 디스플레이, 스캐너 및 대시보드 앱을 위한 고정 간격 Native WebView 재시작
restartWebView- JavaScript가 새 Native WebView를 요청할 수 있도록합니다. 페이지 리로드 없이.WebViewCrashPluginConfig타입plugins.WebViewCrashCapacitor 웹뷰 충돌 옵션capacitor.config.ts.getPendingCrashInfo- 저장된 네이티브 충돌 또는 재시작 마커를 반환하거나nullmessage key `compare_capawesome_step2_text` (Compare Capawesome Step2 Text).clearPendingCrashInfo- 저장된 Native 충돌 또는 재시작 마커를 반환하거나simulateCrashRecoverynothing이 대기 중일 때.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'. Use restartIntervalMs 장치 지역 시간대에서 restartCron 일일 03:00 재시작을 위해 0 3 * * * 두 가지 예약을 동시에 구성하지 마세요: restartCron 가 설정되어且 restartIntervalMs 보다 크면 0자연 초기화는 치명적인 구성 오류를 발생시킵니다.
수동 네이티브 재시작
호출 restartWebView() JavaScript가 네이티브 WebView를 예방적으로 대체해야 하는 경우, 예를 들어 메모리 집약적인 워크플로우 후:
await WebViewCrash.restartWebView();
메서드는 reason: 'manualRestart' 그리고 네이티브 code에게 새로운 WebView를 생성하도록 요청합니다. Android는 호스트 활동을 재생성하고 iOS는 Capacitor 브리지를 다시 빌드하여 새로운 WKWebView 전체 참조
__CAPGO_KEEP_0__:
- GitHub: https://github.com/Cap-go/capacitor-webview-crash/
- Docs: /docs/plugins/webview-crash/
@capgo/capacitor-웹뷰 충돌
Manual Native Restart Capacitor-웹뷰-크래시를 사용하여 @capgo/capacitor-웹뷰-크래시 자연스러운 미디어 및 인터페이스 동작을 계획하고 @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-웹뷰-크래시와 연결 @capgo/capacitor-웹뷰 충돌 @capgo/capacitor-웹뷰 충돌 Getting Started Getting Started의 구현 세부 사항 Capacitor-라이브-액티비티를 사용하여 @capgo/capacitor-라이브-액티비티 native 기능을 위한 @capgo/capacitor-live-activities @capgo/capacitor-라이브-활동 @capgo/capacitor-라이브-활동 Capacitor-비디오-플레이어를 사용하여 @capgo/capacitor-비디오-플레이어 native 기능을 위한 @capgo/capacitor-video-player를 사용합니다.