내용으로 건너뛰기

업데이트 동작

Capgo의 업데이트 동작은 업데이트를 빠르게 전달하고 사용자 경험을 최소화하는 균형을 맞추기 위해 설계되었습니다.

Capgo

기본 업데이트 흐름

기본 업데이트 흐름

Capgo은 앱 업데이트를 다음과 같이 기본적으로 처리합니다.

  1. 앱이 전면에 표시될 때, Capgo 플러그인은 새로운 업데이트가 있는지 확인합니다. 앱이 열려 있는 동안, 반복 타이머를 통한 반복적인 확인도 수행합니다. periodCheckDelay (기본 10분).

  2. 업데이트가 발견되면, __CAPGO_KEEP_0__은 사용자가 현재 앱 버전을 사용하는 동안 배경에서 다운로드를 수행합니다.

  3. Capgo은 다운로드가 완료되면 사용자가 앱을 백그라운드에 보내기를 기다립니다.

  4. 사용자가 앱을 다시 전면에 표시할 때, 최신 버전의 앱을 실행하게 됩니다.

이 흐름은 사용자가 업데이트를 위한 경고나 다운로드를 기다리지 않고 항상 최신 버전의 앱을 실행할 수 있도록 합니다.

배경 또는 종료 이벤트에서 업데이트를 적용하는 것은 사용자 경험에 몇 가지 주요 이점을 제공합니다.

  • 사용자는 업데이트를 위한 프롬프트에 의해 중단되지 않으며 다운로드를 기다리지 않아야 하는 중간 세션에 방해받지 않습니다.

  • 업데이트는 세션 사이에 무결성 있게 적용되므로 앱을 시작할 때 항상 최신 상태의 경험을 제공합니다.

  • 활발한 사용자에게 방해를 주지 않고도 자주 업데이트를 제공할 수 있습니다.

주된 단점은 사용자가 앱을 배경화면으로 보내고 즉시 앱을 다시 시작하면 업데이트가 적용된 사이에 저장되지 않은 상태를 잃을 수 있다는 것입니다.

이 문제를 해결하기 위해 우리는 다음을 추천합니다.

  • 주기적으로 상태를 저장하고 앱이 다시 시작될 때 부드럽게 복원하십시오.

  • 대규모 앱 상태를 수정하는 매우 빈번한 업데이트를 피하십시오.

  • Sensitive 흐름을 위한 업데이트 동작을 맞춤화하는 것을 고려하십시오 (아래 참조).

일부 경우, 업데이트가 적용되는 시점을 더 세밀하게 제어하고 싶을 수 있습니다. 예를 들어, 사용자가 진행 중인 흐름을 완료하기 전에 업데이트를 적용하거나, 서버 측 변경과 앱 업데이트를 동기화하고 싶을 수 있습니다.

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 policy in your Capacitor config.

autoUpdate 는 JavaScript __CAPGO_KEEP_0__ 에서 설정됩니다. capacitor.config.ts 파일에서 설정합니다. JavaScript code 에서 설정하지 않습니다.

  • false 다음 값을 지원합니다: 'off'또는
  • true : 자동 업데이트 확인을 비활성화합니다 'atBackground' 또는
  • 'atInstall'(기본값): 앱이 전면 모드로 전환할 때마다 자동으로 확인하고 다운로드합니다. 다음으로 앱이 배경으로 이동하면 업데이트를 적용합니다. "atBackground" : 새 설치 또는 네이티브 앱 스토어 업데이트 직후에 즉시 적용합니다. 그 외의 경우
  • 'onLaunch'behavior "atBackground" : 앱이 죽은 상태에서 전면 모드로 전환될 때 즉시 적용합니다. 첫 번째 확인 후에는
  • 'always'behavior
  • 'onlyDownload': 전면 전환마다 확인하고 업데이트가 있을 때 즉시 적용합니다. updateAvailable, 자동 업데이트를 설정하거나 다음 번들 또는 업데이트를 자동으로 적용하지 않습니다.

네이티브 빌드 테스트하기 (라이브 업데이트가 적용되지 않음)

네이티브 빌드 테스트하기 (라이브 업데이트가 적용되지 않음) 섹션

보기 네이티브 빌드 테스트하기 (라이브 업데이트가 적용되지 않음) 네이티브 버전, 채널 정책, CI 구성 요소에 대한 보안을 위해.

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;

With __CAPGO_KEEP_0__이 전면 전환 시마다 체크하고 다운로드가 완료되면 즉시 업데이트를 적용합니다. 사용자가 앱을 활성화하고 있는 경우에도. autoUpdate: 'always'Capgo에 의해 제어되는 주기적인 체크는 앱이 열려 있는 동안도 동일한 즉시 적용 동작을 트리거할 수 있습니다. periodCheckDelay __CAPGO_KEEP_0__이 네이티브 구성인 경우, 즉시 적용 모드에서는 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',
},
},
};

이 모드에서 플러그인은 updateAvailable 이후에 다운로드된 번들을 처리합니다. 앱은 이때 __CAPGO_KEEP_0__의 업데이트 알림을 호출하거나 표시할 수 있습니다. CapacitorUpdater.set() 자동 스플래시 스크린 처리

To make instant apply modes easier to use, Capgo provides an autoSplashscreen 이 옵션이 활성화되면:

const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
autoUpdate: 'always', // or 'atInstall'
autoSplashscreen: true, // Automatically hide splashscreen
keepUrlPathAfterReload: true,
},
SplashScreen: {
launchAutoHide: false,
},
},
};

Copy to clipboard autoSplashscreen When __CAPGO_KEEP_0__ is enabled:

  • 업데이트가 적용될 때 자동으로 스플래시 화면을 숨깁니다.
  • 업데이트가 필요하지 않으면 자동으로 스플래시 화면을 숨깁니다.
  • 이벤트나 appReady 을 수동으로 듣거나 호출할 필요가 없습니다. SplashScreen.hide()

수동 스플래시 화면 관리

수동 스플래시 화면 관리

수동 제어를 선호하거나 커스텀 로직이 필요하다면 autoSplashscreen 을 비활성화하고 직접 처리할 수 있습니다.

import { CapacitorUpdater } from '@capgo/capacitor-updater';
import { SplashScreen } from '@capacitor/splash-screen';
CapacitorUpdater.addListener('appReady', () => {
// Hide splash screen
SplashScreen.hide();
});
CapacitorUpdater.notifyAppReady();

이벤트는 앱이 초기화되고 임시 업데이트를 적용한 후 발생합니다. 이 시점에서 앱의 UI를 표시할 수 있으며, 사용자는 최신 버전을 볼 수 있습니다. appReady 업데이트를 적용한 후 앱이 초기화되면 발생하는 이벤트입니다.

스플래시 화면을 숨기기 위해 appReady 이벤트가 발생할 때, instant apply 모드 사용 시 keepUrlPathAfterReload 설정 옵션을 true 로 설정하는 것을 추천합니다. 이 설정은 앱이 업데이트로 재로드 될 때 현재 URL 경로를 유지하여 사용자의 위치를 유지하고 사용자에게 불편함을 줄입니다.

instant apply 모드 사용 시 appReady 이벤트를 처리하지 않고 keepUrlPathAfterReload 를 설정하지 않으면 사용자는 잠시 동안 앱의陈舊 버전을 보거나 초기 루트로 돌아가거나 업데이트가 적용되는 동안 깜빡임을 보게 됩니다.

instant apply 모드를 사용하는 것은 중요한 버그 수정 또는 보안 패치 전달에 유용할 수 있지만 몇 가지 단점이 있습니다.

  • 업데이트가 적용되는 동안 사용자가 스플래시 화면을 제대로 처리하지 않으면(이벤트를 처리하는 방법으로 autoSplashscreen 또는 수동 appReady 이벤트 처리를 사용하는 경우) 사용자는 업데이트가 적용되는 동안 짧은 깜빡임이나 로딩 상태를 보게 됩니다.
  • 업데이트가 앱 상태나 UI를 변경하면 사용자는 세션 중에 갑작스러운 변경을 보게 됩니다.
  • instant apply 모드 사용 시 사용자의 위치가 앱 내에서 손실될 수 있습니다. keepUrlPathAfterReload 설정이 설정되지 않았을 수 있으므로 사용자가 혼란스럽게 될 수 있습니다.
  • 업데이트 전환을 보장하기 위해 상태를 저장하고 복원하는 것을 신중하게 처리해야 합니다.

즉시 적용을 활성화하는 경우, 다음을 권장합니다:

  • 가장 단순한 설정을 위해 autoSplashscreen: true 사용자 지정 로직이 필요할 경우 appReady event를 수동으로 처리합니다.
  • 사용자가 앱 내 위치를 유지하기 위해 keepUrlPathAfterReload 사용자 진행을 잃지 않고 상태를 저장하고 복원하는 것을 필요에 따라 수행합니다. true 업데이트 전환 시 사용자에게 혼란을 주지 않도록 하기 위해 앱의 업데이트 동작을 철저히 테스트합니다.
  • 업데이트를 빠르게 제공하고 방해를 최소화하는 데 가장 좋은 균형을 제공하는 기본 업데이트 동작이 대부분의 경우에 가장 적합합니다. 그러나 특정 요구가 있는 앱의 경우 __CAPGO_KEEP_0__는 업데이트를 언제 그리고 어떻게 적용할 수 있는 유연성을 제공합니다.
  • 업데이트를 즉시 적용하는 경우, 다음을 권장합니다:

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 Updates를 계속 진행하세요.

__CAPGO_KEEP_0__ Live Updates의 'Live Updates를 계속 진행하세요.' 섹션

__CAPGO_KEEP_0__ Live Updates를 사용 중이라면 Live Updates를 계속 진행하세요. Live Updates를 계속 진행하세요.를 사용하여 라이브 업데이트 전송 계획을 세우고, Capgo Live Updates와 연결하세요. Capgo Live Updates의 제품 워크플로우에서 Live Updates를 계속 진행하세요. Live Updates를 계속 진행하세요.의 구현 세부 정보를 위한 Overview Overview의 구현 세부 정보를 위한 Overview Features의 구현 세부 정보를 위한 Features Live Updates를 계속 진행하세요.의 유형들로 구성됩니다. __CAPGO_KEEP_0__ 업데이트 유형의 구현 세부 정보에 대해, 시작하기 시작하기의 구현 세부 정보에 대해,