Capgo Live Update에 대한 문서를 보려면 여기를 클릭하세요.
소스 코드 보기
Using @capgo/capacitor-webview-crash
iOS와 Android에서 웹뷰 충돌을 감지하고, 죽은 웹뷰를 재시작하고, 일정 간격으로 오래 실행되는 웹뷰를 재활용하여 메모리 압박이 OOM으로 변하지 않도록 합니다.
설치
npm install @capgo/capacitor-webview-crash
npx cap sync
이 플러그인이 제공하는 내용
- iOS와 Android에서 웹뷰 충돌 후 네이티브 재시작
- 일정 간격으로 네이티브 웹뷰 재시작을 사용하는 키오스크, POS, 시그니처, 스캐너, 데스크탑 앱을 위한 플러그인
restartWebView- 자바스크립트가 페이지 리로드 없이 새로운 네이티브 웹뷰를 요청할 수 있습니다.WebViewCrashPluginConfig- 종류plugins.WebViewCrashoption incapacitor.config.ts.getPendingCrashInfo- 저장된 네이티브 충돌 또는 재시작 마커를 반환합니다.nullnothing이 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
- GitHub: https://github.com/Cap-go/capacitor-webview-crash/
- 문서: /docs/plugins/webview-crash/
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-비디오 플레이어의 원시 기능을 위해