업데이트 동작
설치 명령어와 이 플러그인에 대한 전체 마크다운 가이드를 포함한 설정 명령어를 복사하세요.
Capgo 앱에 업데이트를 릴리스할 때, 사용자들이 가능한 한 빨리 업데이트를 받기를 원할 것입니다. 그러나 사용자들의 경험을 방해하지 않고 다운로드를 기다리거나 앱을 다시 시작하지 않도록 하기 위해, 사용자들이 업데이트를 받을 때까지 기다리게 하기를 원하지 않습니다.
Capgo의 업데이트 동작은 업데이트를 빠르게 제공하는 동시에 사용자들의 경험을 최소화하는 것을 목표로 설계되었습니다.
기본 업데이트 흐름
기본 업데이트 흐름Capgo의 기본 동작은 다음과 같습니다:
-
Capgo 플러그인이 앱이 전면에 표시될 때 새로운 업데이트가 있는지 확인합니다. 앱이 열려 있는 동안, 반복 타이머(기본 10분)를 통해서도 다시 확인합니다.
periodCheckDelay업데이트가 발견되면, 사용자가 현재 앱 버전을 사용하는 동안 배경에서 다운로드가 시작됩니다. -
(기본 10분)
-
다운로드가 완료되면 Capgo 앱을 백그라운드에 보낼 때까지 기다립니다.
-
사용자가 앱을 다시 전면에 띄울 때, 업데이트된 버전으로 실행됩니다.
이 흐름은 사용자가 항상 최신 버전의 앱을 실행하고 업데이트를 위한 알림이나 다운로드를 기다리지 않도록 합니다.
이 접근법의 이유
제목 ‘이 접근법의 이유’업데이트를 배경 또는 종료 이벤트에 적용하는 것은 사용자 경험에 몇 가지 주요 이점을 제공합니다:
-
사용자는 업데이트를 위한 알림이나 다운로드를 기다리지 않고 업데이트가 진행됩니다.
-
업데이트는 세션 사이에 적용되므로 앱을 실행할 때마다 최신 버전의 앱을 사용할 수 있습니다.
-
업데이트를 자주 배포할 수 있습니다. 사용자가 앱을 사용 중일 때 업데이트를 중단할 걱정은 없습니다.
주된 단점은 사용자가 앱을 백그라운드에 보내고 다시 앱을 시작하면 업데이트가 적용된 사이에 저장되지 않은 상태를 잃을 수 있다는 것입니다.
이 문제를 완화하기 위해 추천하는 방법은 다음과 같습니다.
-
앱이 다시 시작될 때까지 자주 상태를 저장하고 그 상태를 부드럽게 복원하는 것입니다.
-
앱 상태의 큰 부분을 수정하는 업데이트를 자주 배포하지 않습니다.
-
Sensitive 흐름에 대한 업데이트를 커스터마이즈하는 것을 고려합니다. (아래 참조).
업데이트가 적용되는 시기를 커스터마이즈합니다.
업데이트가 적용되는 시기를 커스터마이즈하는 방법업데이트가 적용되는 시기를 커스터마이즈하는 방법
Capgo provides a setDelay __CAPGO_KEEP_0__은 업데이트가 설치되기 전에 충족해야 하는 조건을 지정할 수 있는 함수를 제공합니다.
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: 앱이 종료될 때까지 업데이트를 적용하지 않습니다.
이러한 조건을 혼합하여 업데이트가 설치되는 시기를 정확하게 제어할 수 있습니다.
즉시 업데이트를 적용합니다.
Section titled “즉시 업데이트 적용””중요한 업데이트 또는 상태가 매우 단순한 앱의 경우, 배경 또는 종료 이벤트를 기다리지 않고 즉시 다운로드된 업데이트에 대해 적용하고 싶을 수 있습니다. Capgo은 이 기능을 지원하기 위해 autoUpdate policy를 Capacitor config에 추가할 수 있습니다.
autoUpdate is set in your capacitor.config.ts file, not in JavaScript code. It supports these values:
falseor'off'다른 옵션을 선택하세요.true: Disable automatic update checks'atBackground'or'atInstall': 새로운 설치 또는 네이티브 앱 스토어 업데이트가 끝난 후에만 즉시 적용; 그 외에는"atBackground"behavior'onLaunch': 앱이 죽은 상태에서 전면으로 가져와졌을 때(콜드 스타트) 즉시 적용; 그 후 첫 번째 확인 후에는"atBackground"behavior'always': 전면 전환마다 확인하고 업데이트가 있을 때 즉시 적용'onlyDownload': 확인하고 다운로드를 자동으로 하되,updateAvailable,
Live Update를 사용하지 않는 네이티브 빌드 테스트 Live Update를 사용하지 않는 네이티브 빌드 테스트 Live Update를 사용하지 않는 네이티브 빌드 테스트에 대한 자세한 내용은 네이티브 버전, 채널 정책, CI 구성 safeguard에 대해 참조하세요.
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 when using instant apply with autoSplashscreen }, },};
export default config;그리고 autoUpdate: 'always'Capgo가 전면 전환 시마다 체크를 수행하고 다운로드가 완료된 즉시 업데이트를 적용합니다. 사용자가 앱을 활성화하고 있는 경우에도. periodCheckDelay 이러한 즉시 적용 동작은 앱이 열려 있는 동안 __CAPGO_KEEP_0__가 반복적으로 실행되면 발생할 수 있습니다.
참고로 autoUpdate code는 네이티브 구성이기 때문에 즉시 적용 모드에서는 추가적인 처리가 필요합니다.
다운로드를 자동으로 시작하고 적용하지 않도록 하려면
자동 다운로드와 적용을 생략하는 방법If you want Capgo to check and download updates automatically but never apply them automatically, use autoUpdate: 'onlyDownload':
const config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'onlyDownload', }, },};자동 다운로드와 적용을 생략하는 방법 updateAvailable 자동 다운로드가 완료되면 __CAPGO_KEEP_0__가 다운로드한 패키지를 확인하고 자동으로 적용하지 않도록 하려면 CapacitorUpdater.set() 복사
이 모드에서는 플러그인이 다운로드된 패키지에 대한 이벤트를 발생시킵니다. 앱은 패키지를 다운로드 받은 후 __CAPGO_KEEP_0__를 호출하거나 사용자에게 업데이트 알림을 표시할 수 있습니다.
자동 스플래시 스크린 처리Capgo에서 즉시 적용 모드 사용을 더 쉽게 하기 위해 스플래시 스크린을 자동으로 숨기는 옵션을 제공합니다 (버전 7.6.0부터 사용 가능): autoSplashscreen 복사
const config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'always', // or 'atInstall' autoSplashscreen: true, // Automatically hide splashscreen keepUrlPathAfterReload: true, }, SplashScreen: { launchAutoHide: false, }, },};업데이트가 적용될 때 플러그인은 스플래시 스크린을 자동으로 숨깁니다 autoSplashscreen 업데이트가 필요하지 않으면 플러그인은 스플래시 스크린을 자동으로 숨깁니다
- __CAPGO_KEEP_0__에서 이벤트를 수신하거나
- 수동 스플래시 스크린 처리
- 수동 스플래시 스크린 처리
appReady__CAPGO_KEEP_0__에서 즉시 적용 모드 사용을 더 쉽게 하기 위해 스플래시 스크린을 자동으로 숨기는 옵션을 제공합니다 (버전 7.6.0부터 사용 가능):SplashScreen.hide()
__CAPGO_KEEP_0__에서 즉시 적용 모드 사용을 더 쉽게 하기 위해 스플래시 스크린을 자동으로 숨기는 옵션을 제공합니다 (버전 7.6.0부터 사용 가능):
__CAPGO_KEEP_0__에서 즉시 적용 모드 사용을 더 쉽게 하기 위해 스플래시 스크린을 자동으로 숨기는 옵션을 제공합니다 (버전 7.6.0부터 사용 가능):만들기나 사용자 정의 로직이 필요할 때는 수동 제어를 사용하거나 autoSplashscreen 자신이 처리할 수 있도록 비활성화할 수 있습니다:
import { CapacitorUpdater } from '@capgo/capacitor-updater';import { SplashScreen } from '@capacitor/splash-screen';
CapacitorUpdater.addListener('appReady', () => { // Hide splash screen SplashScreen.hide();});
CapacitorUpdater.notifyAppReady();The appReady 이벤트는 앱이 초기화 및 적용 중인 모든 업데이트를 완료한 후 발생합니다. 이 시점에서 앱의 UI를 표시할 수 있으며, 사용자는 항상 최신 버전을 볼 수 있습니다.
업데이트를 처리하는 것 외에도 appReady 이벤트를 처리하는 것을 추천합니다. keepUrlPathAfterReload 설정 옵션을 true 사용할 때 instant apply 모드에서
사용하여 현재 URL 경로를 유지하고 사용자가 앱의 위치를 유지하고 혼란을 줄이는 데 도움이 됩니다. appReady instant apply 모드에서 keepUrlPathAfterReload 사용하지 않고
critcal 버그 수정 또는 보안 패치 전달을 위해 instant apply 모드를 사용하는 것이 유용할 수 있지만, 몇 가지 단점이 있습니다:
- 업데이트가 적용되는 동안 사용자가 보는 짧은 깜빡임이나 로딩 상태가 발생할 수 있습니다. 이 경우 스플래시 스크린을 적절하게 처리하지 않으면 발생합니다 (스플래시 스크린을 처리하는 방법은
autoSplashscreen또는 수동appReady이벤트 처리를 통해) - 업데이트가 앱 상태나 UI를 수정하면 사용자가 중간에 세션을 진행 중일 때 갑작스러운 변경을 볼 수 있습니다.
- 앱의 위치를 저장하지 않으면 사용자의 위치가 손실될 수 있습니다.
keepUrlPathAfterReload이 경우 사용자는 혼란스럽게 될 수 있습니다. - 업데이트를 적용하는 동안 사용자 경험을 최적화하려면 상태를 저장하고 복원하는 것을 신중하게 처리해야 합니다.
instant apply를 활성화하는 경우, 다음을 권장합니다:
- 스플래시 스크린을 위한 가장 단순한 설정을 사용하거나, 수동으로
autoSplashscreen: true이벤트를 처리하는 경우 custom logic이 필요합니다.appReady__CAPGO_KEEP_0__ - 설정
keepUrlPathAfterReload로true사용자의 위치를 앱 내에서 유지하기 위해 사용자 위치를 보존하는 데 도움이 됩니다. - 사용자 진행을 잃지 않도록 앱 상태를 필요에 따라 저장하고 복원합니다.
- 앱의 업데이트 동작을 철저히 테스트하여 충격적인 전환, 잃어버린 상태, 또는 방향을 잃는 위치 변경이 없는지 확인합니다.
대부분의 경우 기본 업데이트 동작이 빠르게 업데이트 достав리면서 최소한의 방해를 주는 균형을 제공합니다. 그러나 특정 요구를 가진 앱에 대해 Capgo는 업데이트 적용 시기와 방법을 커스터마이즈할 수 있는 유연성을 제공합니다.
다음 단계로
앱의 업데이트 동작업데이트 동작을 사용하여 실시간 업데이트 전달을 계획하고 __CAPGO_KEEP_0__ Live Updates와 연결합니다. 업데이트 동작 __CAPGO_KEEP_0__ Live Updates Capgo Capgo Live Updates를 위한 제품 워크플로에 대해 개요 개요에 대한 구현 세부 정보를 위해 기능 기능에 대한 구현 세부 정보를 위해 업데이트 유형 업데이트 유형에 대한 구현 세부 정보를 위해, 시작하기 시작하기에 대한 구현 세부 정보를 위해.