업데이트 동작에서 계속하기
Live Update
When you release an update to your Capgo app, you probably want your users to receive that update as soon as possible. But you also don’t want to disrupt their experience by forcing them to wait for a download or restart the app in the middle of a session.
Capgo의 업데이트 동작은 사용자에게 최소한의 방해를 주면서도 업데이트를 빠르게 제공하기 위해 설계되었습니다.
기본 업데이트 흐름
기본 업데이트 흐름Capgo는 기본적으로 앱 업데이트를 어떻게 처리하는지 설명합니다.
-
Capgo 플러그인이 앱이 전면에 표시될 때 새로운 업데이트가 있는지 확인합니다. 앱이 열려 있는 동안 반복 타이머(기본 10분)를 통해서도 다시 확인합니다.
periodCheckDelay(기본 10분) -
업데이트가 발견되면 __CAPGO_KEEP_0__는 사용자가 현재 앱 버전을 계속 사용하는 동안 백그라운드에서 다운로드합니다.
-
다운로드가 완료되면 Capgo는 사용자가 앱을 백그라운드에 보내기를 기다립니다.
-
사용자가 앱을 다시 전면에 표시할 때 업데이트된 버전을 실행합니다.
이 흐름은 사용자가 항상 최신 버전의 앱을 실행할 수 있도록 하며 업데이트를 위한 프롬프트나 다운로드를 기다리도록 강제하지 않습니다.
이 방법의 이유는 무엇인가요?
이름이 "이 방법의 이유는 무엇인가요?"인 섹션입니다.앱 업데이트를 배경 또는 종료 이벤트에 적용하는 것은 사용자 경험에 몇 가지 주요 이점을 제공합니다:
-
사용자는 업데이트를 위한 프롬프트나 다운로드를 기다리는 중에 중단되지 않습니다.
-
업데이트는 세션 사이에 무결성 있게 적용되므로 앱을 시작할 때 항상 최신 상태가 유지됩니다.
-
활발한 사용자에게 업데이트를 자주 전달할 수 있습니다.
주된 단점은 사용자가 앱을 배경화하고 즉시 앱을 다시 시작하면 업데이트가 적용된 사이에 저장되지 않은 상태를 잃을 수 있다는 것입니다.
이 문제를 완화하기 위해 우리는 다음을 추천합니다:
-
주기적으로 상태를 저장하고 앱이 다시 시작될 때 상태를 부드럽게 복원합니다.
-
대부분의 앱 상태를 수정하는 매우 빈번한 업데이트를 피합니다.
-
업데이트 동작을 사용자 흐름에 맞게 조정하는 방법을 고려해 보십시오 (아래 참조).
업데이트가 적용되는 시기를 조정하는 방법
업데이트가 적용되는 시기를 조정하는 방법일부 경우, 업데이트가 적용되는 시기를 더 세밀하게 제어하고 싶을 수 있습니다. 예를 들어, 사용자가 진행 중인 흐름을 완료하기 전에 업데이트를 설치하거나, 서버 측 변경과 앱 업데이트를 동기화하고 싶을 수 있습니다.
Capgo은 setDelay 업데이트가 설치되기 전에 충족해야 하는 조건을 지정할 수 있는 함수를 제공합니다:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setMultiDelay({ delayConditions: [ { kind: 'date', value: '2023-06-01T00:00:00.000Z', }, { kind: 'background', value: '60000', }, ],});이 예제에서는 2023년 6월 1일 이후에 업데이트를 설치하고, 앱이 백그라운드에서 60초 이상 실행된 경우에만 업데이트를 설치합니다.
다음과 같은 지연 조건이 제공됩니다:
date: 특정 날짜/시간 이후에 업데이트를 설치합니다.background: 앱이 백그라운드에서 실행된 후 최소 지연 시간이 지난 후에 업데이트를 설치합니다.nativeVersion: 최소 버전의 네이티브 바이너리가 설치된 후에 업데이트를 설치합니다.kill: 앱 종료 이벤트가 발생하기까지 기다려야 업데이트를 적용합니다.
업데이트를 설치할 때 정확히 제어하고 싶다면, 이 조건들을 혼합하여 사용할 수 있습니다.
즉시 업데이트를 적용
실시간 업데이트 적용For critical updates or apps with very simple state, you may want to apply an update as soon as it’s downloaded, without waiting for a background or kill event. Capgo supports this via the autoUpdate 정책은 Capacitor 설정에서 관리됩니다.
autoUpdate code capacitor.config.ts 파일, 자바스크립트 code가 아닌 경우. 지원하는 값은 다음과 같습니다.
falseSDK'off'CLItrueSDK'atBackground'npm'atInstall'bun"atBackground"동작'onLaunch': 앱이 죽은 상태에서 전면면면으로 가져올 때만 즉시 적용합니다. 첫 번째 확인 후에는"atBackground"동작'always': 전면 전환 시마다 확인하고 업데이트가 있을 때 즉시 적용합니다'onlyDownload': 자동으로 확인하고 다운로드하고,updateAvailable, 그리고 다음 번들 또는 업데이트를 자동으로 설정하지 않습니다
Live Update가 없는 네이티브 빌드를 테스트하세요
Live Update가 없는 네이티브 빌드를 테스트하세요See 클립보드에 복사 동작
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'always', // or 'atInstall' for updates only on app install/update autoSplashscreen: true, keepUrlPathAfterReload: true, }, SplashScreen: { launchAutoHide: false, // Required for instant apply with autoSplashscreen }, },};
export default config;With autoUpdate: 'always', Capgo이 전면 전환마다 체크를 수행하고 다운로드가 완료된 즉시 업데이트를 적용합니다. 사용자가 앱을 사용하고 있는 경우에도. periodCheckDelay __CAPGO_KEEP_0__이 앱이 열려 있는 동안 반복 타이머로 실행되면 동일한 즉시 적용 동작을 트리거할 수 있습니다.
주의하십시오. Live Update의 즉시 적용 모드는 native configuration이기 때문에 JavaScript __CAPGO_KEEP_0__에서 추가 처리가 필요합니다. autoUpdate is a native configuration, instant apply modes require some additional handling in your JavaScript code.
다운로드 자동 적용
자동 다운로드와 적용을 원하지 않으면자동 업데이트를 확인하고 다운로드 하기를 원하지만 자동으로 적용하지 않기를 원한다면 Capgo의 "자동 업데이트를 확인하고 다운로드 하기" 옵션을 사용하세요. autoUpdate: 'onlyDownload':
const config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'onlyDownload', }, },};bundle이 다운로드되면 플러그인은 updateAvailable 앱이 업데이트 알림을 표시하거나 CapacitorUpdater.set() 자동 스플래시 스크린 관리
자동 스플래시 스크린 관리
자동 스플래시 스크린 처리즉시 적용 모드 ("atInstall", "onLaunch", "always")는 autoSplashscreen 이용 @capacitor/splash-screen (버전 7.6.0부터 사용 가능). 플러그인을 설치하고 스플래시를 Capgo가 숨길 때까지 표시하세요:
const config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'always', // or 'atInstall' autoSplashscreen: true, // Automatically hide splashscreen keepUrlPathAfterReload: true, }, SplashScreen: { launchAutoHide: false, }, },};활성화되면 autoSplashscreen 이벤트를 수동으로 듣거나
- 호출할 필요가 없습니다.
- 플러그인이 업데이트를 적용할 때 스플래시 스크린을 자동으로 숨깁니다.
- 플러그인이 업데이트가 필요하지 않으면 스플래시 스크린을 자동으로 숨깁니다.
appReady업데이트 동작SplashScreen.hide()
Live Update
Section titled “Live Update”Keep autoSplashscreen: true이 업데이트가 준비되면 추가 로직이 필요하다면 appReady 또한 autoSplashscreen 이것은:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
CapacitorUpdater.addListener('appReady', () => { // Update is applied. autoSplashscreen already hid the splash.});
CapacitorUpdater.notifyAppReady();Live Update appReady Live Update
Live Update keepUrlPathAfterReload to true Live Update
Live Update를 즉시 적용 모드로 사용하면 중요 버그 수정 또는 보안 패치 전달에 유용할 수 있지만, 몇 가지 트레이드 오프가 있습니다:
- 사용자는 업데이트가 적용되는 동안 짧은 깜빡임 또는 로딩 상태를 볼 수 있습니다. 만약
@capacitor/splash-screen이 설정이 없거나autoSplashscreen이 설정이 비활성화되어 있다면. - 업데이트가 앱 상태나 UI를 수정하면 사용자는 세션 중간에 갑작스러운 변경을 볼 수 있습니다.
- 앱의 사용자 위치가
keepUrlPathAfterReload이 설정이 비활성화되어 있다면, 사용자가 혼란스럽게 될 수 있습니다. - 상태를 저장하고 복원하는 것을 신중하게 처리하여 smooth한 전환을 보장해야 합니다.
Live Update를 즉시 적용 모드로 사용한다면, 다음을 권장합니다:
- 업데이트를
npx @capgo/cli@latest bundle upload --delta으로 업로드하여 사용자 경험에 영향을 주지 않도록 하세요. - 설치
@capacitor/splash-screen및 설정autoSplashscreen: true와launchAutoHide: false. - 설정
keepUrlPathAfterReload으로true사용자의 위치를 앱 내에서 유지합니다. - 사용자의 위치를 유지하기 위해 사용자 위치를 보존하는 것
- 사용자의 진행 상황을 잃지 않도록 앱 상태를 저장하고 복원하는 것
In most cases, the default update behavior provides the best balance of delivering updates quickly and minimizing disruption. But for apps with specific needs, Capgo provides the flexibility to customize when and how updates are applied.
대부분의 경우, 기본 업데이트 동작이 빠르게 업데이트 제공하고 최소한의 방해를 줄이는 최적의 균형을 제공합니다. 하지만 특정한 요구를 가진 앱의 경우 __CAPGO_KEEP_0__가 업데이트 시점과 방법을 조정할 수 있는 유연성을 제공합니다.
업데이트 동작에서 계속업데이트 동작에서 계속하는 방법 업데이트 동작을 사용하고 있다면 live update 배포를 계획하려면 Capgo 라이브 업데이트 Capgo Live Updates 개요 개요 기능 기능 업데이트 유형 업데이트 유형 시작하기 시작하기