__CAPGO_KEEP_0__ - __CAPGO_KEEP_1__ 앱에 대한 실시간 업데이트

웹뷰 충돌 __CAPGO_KEEP_0__ 저장소

GitHub

AI-Assisted Setup을 사용하여 플러그인을 설치할 수 있습니다. AI 도구에 Capgo 스킬을 추가하려면 다음 명령어를 사용하세요:

터미널 창
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

그런 다음 다음 명령어를 사용하세요:

Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-webview-crash` plugin in my project.

만약 Manual Setup을 선호한다면, 플러그인을 설치하기 위해 다음 명령어를 실행하고 아래의 플랫폼별 지침을 따르세요:

터미널 창
npm install @capgo/capacitor-webview-crash
npx cap sync
import { WebViewCrash } from '@capgo/capacitor-webview-crash';

앱 시작 시 가능한 한 빨리 리스너를 첨부하여 사용자가 계속 탐색하기 전에 복구된 런타임이 반응할 수 있도록 하세요:

import { WebViewCrash } from '@capgo/capacitor-webview-crash';
await WebViewCrash.addListener('webViewRestoredAfterCrash', async (info) => {
console.log('Recovered after a WebView crash', info);
// Rehydrate critical state, reopen the correct screen, or prompt the user to retry.
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 code의 결정이 자바스크립트 런타임이 충돌하거나 로드되지 않은 경우에도 유지되도록 하세요:

import type { CapacitorConfig } from '@capacitor/cli';
import type { WebViewCrashPluginConfig } from '@capgo/capacitor-webview-crash';
const webViewCrash: WebViewCrashPluginConfig = {
// Enabled by default. Keep this on for long-running apps.
restartOnCrash: true,
// Use a 5-field cron schedule in the device local timezone.
// Do not combine restartCron with an active restartIntervalMs.
restartCron: '0 3 * * *',
// Optional delay before restarting after a crash.
restartAfterCrashDelayMs: 0,
};
const config: CapacitorConfig = {
plugins: {
WebViewCrash: webViewCrash,
},
};
export default config;

사용하여 restartIntervalMs 사용하여 항상 켜져 있는 앱을 개발할 때 사용하세요: 키오스크 스크린, 제어실 대시보드,倉庫 스캐너, POS 터미널, 차량 태블릿, 디지털 시그니처. 사용하여 restartCron 벽시계 재시작을 위해 사용하세요: 예를 들어 0 3 * * * 일정된 재시작은 reason: 'periodicRestart'그런 다음 안드로이드는 호스트 액티비티를 재생성하고 iOS는 Capacitor 브릿지 뷰를 재구성하여 새로운 Capacitor가 생성됩니다. WKWebView is created from native code.

__CAPGO_KEEP_0__ restartCron __CAPGO_KEEP_0__ *__CAPGO_KEEP_0__ restartCron __CAPGO_KEEP_0__ restartIntervalMs __CAPGO_KEEP_0__ 0__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__ restartWebView() __CAPGO_KEEP_0__

await WebViewCrash.restartWebView();

__CAPGO_KEEP_0__ reason: 'manualRestart'code을 종료하고, 새로운 code를 생성하도록 native code를 요청합니다. Android는 호스트 액티비티를 다시 생성하고, iOS는 새로운 Capacitor 브릿지 뷰를 다시 생성합니다. WKWebView __CAPGO_KEEP_0__이 재로드되지 않고 새로운 __CAPGO_KEEP_0__이 생성됩니다.

API 개요

API 개요

getPendingCrashInfo

__CAPGO_KEEP_0__ 개요

__CAPGO_KEEP_0__ 개요 null __CAPGO_KEEP_0__ 개요

const pending = await WebViewCrash.getPendingCrashInfo();
if (pending.value) {
console.log(pending.value.platform, pending.value.reason);
}

clearPendingCrashInfo

__CAPGO_KEEP_0__ 개요

__CAPGO_KEEP_0__ 개요

await WebViewCrash.clearPendingCrashInfo();

simulateCrashRecovery

__CAPGO_KEEP_0__ 개요

__CAPGO_KEEP_0__을 모방한 실제 충돌 마커를 생성하여 QA 및 로컬 디버깅을 위해 회복 경로를 연습할 수 있습니다.

const simulated = await WebViewCrash.simulateCrashRecovery();
console.log(simulated.value);

restartWebView

__restartWebView__

code에 의해 수동으로 재시작 마커를 저장하고 native code에게 새로운 WebView를 생성하도록 요청합니다.

await WebViewCrash.restartWebView();

플랫폼 노트

플랫폼 노트
  • Android는 onRenderProcessGone, didCrash , rendererPriorityAtExit ,
  • , 및을 포함하여 플랫폼이 제공하는 경우 충돌 메타데이터를 저장합니다. webViewWebContentProcessDidTerminate 및 현재 애플리케이션 상태를 사용할 수 있는 경우 추가합니다.
  • 수동 및 예약된 재시작은 새 WebView를 만듭니다. Android는 호스트 활동을 재생성하고 iOS는 Capacitor 브릿지 뷰를 다시 빌드합니다.
  • 예약된 재시작은 reason: 'periodicRestart'수동 재시작은 reason: 'manualRestart'.
  • 웹에서는 실제 렌더러 충돌을 감지하지 않습니다. 웹 구현은 로컬 스토리지만으로 충돌 동작을 시뮬레이션합니다.
export interface PendingCrashInfoResult {
/**
* Stored crash or restart metadata, or `null` when no marker is pending.
*/
value: WebViewCrashInfo | null;
}
export interface WebViewCrashPluginConfig {
/**
* Restart the WebView from native code when the renderer process dies.
*
* @default true
*/
restartOnCrash?: boolean;
/**
* Fixed native interval, in milliseconds, for proactively replacing long-running WebViews.
*
* Set to `0` to disable interval restarts. Do not combine an active interval
* with `restartCron`; native initialization fails fast when both schedules are configured.
*
* @default 0
*/
restartIntervalMs?: number;
/**
* Cron schedule for proactively replacing long-running WebViews.
*
* Uses standard 5-field cron syntax in the device local timezone:
* `minute hour day-of-month month day-of-week`.
*
* Examples:
* - `0 3 * * *` restarts every day at 03:00.
* - `0,30 * * * *` restarts every 30 minutes.
*
* Do not combine this with an active `restartIntervalMs`; native initialization
* fails fast when both schedules are configured.
*/
restartCron?: string;
/**
* Delay, in milliseconds, before restarting after a crash.
*
* @default 0
*/
restartAfterCrashDelayMs?: number;
}
export interface WebViewCrashInfo {
/**
* Platform that detected and stored the marker.
*/
platform: WebViewCrashPlatform;
/**
* Unix timestamp in milliseconds for when the marker was written.
*/
timestamp: number;
/**
* ISO-8601 version of `timestamp`.
*/
timestampISO: string;
/**
* Platform-specific reason for the crash or restart marker.
*/
reason: WebViewCrashReason;
/**
* Last known WebView URL when the marker was written.
*/
url?: string;
/**
* Android-only hint from `RenderProcessGoneDetail.didCrash()`.
*/
didCrash?: boolean;
/**
* Android-only renderer priority reported at exit.
*/
rendererPriorityAtExit?: number;
/**
* iOS-only application state captured when the WebView process died.
*/
appState?: WebViewCrashAppState;
}

WebViewCrashPlatform

웹뷰 충돌 플랫폼 섹션
export type WebViewCrashPlatform = 'android' | 'ios' | 'web';

WebViewCrashReason

웹뷰 충돌 원인 섹션
export type WebViewCrashReason =
| 'renderProcessGone'
| 'webContentProcessDidTerminate'
| 'periodicRestart'
| 'manualRestart'
| 'simulated';
export type WebViewCrashAppState = 'active' | 'inactive' | 'background' | 'unknown';

진실의 근원

진실의 근원 섹션

이 페이지는 플러그인의 src/definitions.ts업스트림에서 API이 변경되었을 때 다시 싱크를 실행하세요.

Getting Started에서 계속 진행하세요

Getting Started에서 계속하기

__CAPGO_KEEP_0__이 __CAPGO_KEEP_1__-webview-crash를 사용하는 경우 Getting Started __CAPGO_KEEP_0__이 __CAPGO_KEEP_1__-webview-crash와 연결하기 capgo이 capacitor-webview-crash를 사용하는 경우 capgo이 capacitor-live-activities를 사용하는 경우 capgo이 capacitor-live-activities와 연결하기 capgo이 capacitor-live-activities를 사용하는 경우 capgo이 capacitor-live-activities의 구현 세부 정보를 사용하는 경우 capgo이 capacitor-video-player를 사용하는 경우 capgo이 capacitor-video-player와 연결하기 capgo이 capacitor-video-player를 사용하는 경우 @capgo/capacitor-video-player for the implementation detail in @capgo/capacitor-video-player.