본문으로 건너뛰기
모바일 업데이트 Capacitor

효과적인 앱 업데이트 알림 전략

애플리케이션 업데이트 알림을 강력하게 구현하세요. Capacitor 및 Electron에 대한 UX 패턴, Capgo, 무음/강제 업데이트, CI/CD 전략을 학습하세요.

효과적인 앱 업데이트 알림 전략

주말에 핫픽스를 배포했는데, 월요일에 지원팀은 여전히 업데이트 받지 못한 사용자들로부터 문의를 받고 있고, 베타 테스터들은 오래된 버전으로 고착되어 있고, 한 기업 고객은 자신의 field 팀이 실행 중인 정확한 버전을 알고 싶어합니다. 그 순간이 바로 업데이트 알림이 단순한 모달 창이 아닌, 릴리스 관리를 위한 운영 체제라는 것을 깨닫는 순간입니다. 앱 업데이트 알림 업데이트 알림은 단순히 모달 창이 아닌, 릴리스 관리를 위한 운영 체제입니다.

Capacitor와 Electron 프로젝트에서 hardest 부분은 업데이트가 존재하는지 감지하는 것이 아닙니다. hardest 부분은 그 주변의 모든 것: 누구에게 알릴 것인지, 언제 알릴 것인지, 무시하면 어떻게 될지, 업데이트가 CI/CD를 통해 어떻게 이동하는지, rollout 후에 어떤 데이터가 제공되는지 등입니다. 업데이트 알림을 UI의 장식물로만 생각하면, 노이즈가 많은 알림, brittle한 릴리스 로직, 혼란스러운 사용자 경험을 얻을 것입니다. 그러나 업데이트 알림을 제품 생명 주기的一부분으로 생각하면, 더 안전한 롤아웃과 더 평온한 지원 큐를 얻을 수 있습니다.

목차

앱 업데이트 전략이 왜 중요합니까?

업데이트는 유지보수만 아니라 사용자 유지율에도 영향을 미칩니다.

업데이트는 단순히 버그를 고치고 사용자에게 알리고 다음 단계로 넘어가야 한다고 생각하는 팀이 많습니다. 하지만 제품 영향력을 놓치고 있습니다.

설치 후 앱으로 돌아오게 하는 Lifecycle 채널 중 하나인 푸시 알림은 데이터를 요약한 Invesp의 모바일 푸시 알림 연구 푸시 알림이 앱 참여도를 88%까지, 사용자가 옵인한 경우 2배가량 업데이트 전략에서 중요한 것은 모든陈舊한 클라이언트가 새로운 기능, 수정, 또는 준수 변경을 배포한 후에 절대로 볼 수 없는 사용자라는 것입니다.

약간의 업데이트 흐름은 동시에 세 가지 문제를 만듭니다:

  • 제품 지연 새로운 기능이 불균형하게 출시되기 때문에 PM은 분석에서 혼란스러운 신호를 읽습니다.
  • 지원 지연 agent가 스크린샷, 버전, 장치 정보를 요청하기 전에 문제를 재현할 수 없기 때문에 지원 지연이 나타납니다.
  • 보안 취약성 기존 클라이언트가 이미 이동한 API와 계속 통신할 때 보안 취약성이 증가합니다.

실용적인 규칙: 업데이트 배포를 릴리스 관리의 일부로 다루고, 스프린트의 마지막에 보내는 예의 메시지로 다루지 않는다.

라이브 업데이트와 스토어 업데이트 해결하는 문제가 다르다.

앱 스토어와 플레이 스토어 업데이트 여전히 중요하다. 네이티브 의존성 변경, 정책에 의한 릴리스, 권한 변경, 바이너리 수준 수정은 여전히 중요하다. 하지만 스토어에 의한 업데이트만 시스템의 한 층으로, 검토와 사용자 수용이 직접 제어할 수 없는 이유로 느린 것이 사실이다.

For Capacitor and Electron apps, live updates cover a different category of work. They’re suited to web bundle changes such as JavaScript, CSS, copy, assets, and feature flags that don’t require a fresh binary. In practice, that means you can separate two release questions:

릴리스 문제 최적
이 변경 사항은 새로운 네이티브 바이너리가 필요합니까? 새로운 네이티브 바이너리가 필요한지 여부?
스토어 릴리스 Live update
__CAPGO_KEEP_0__ 사용자가 계속 진행하기 전에 알릴 필요가 있는지 여부?
현재는 어떤 사용자에게만 필요할까요? 채널 기반 배포

그 분할은 클라이언트 앱을 개발하는 대행사들이 단일 '업데이트가 준비되었습니다' 팝업을 설계하는 것을 중단해야 하는 이유입니다. 전문 팀은 부드러운 지시, 무음 적용 경로, 롤백 규칙, 채널 대상 설정 및 후속 지원이 이후에 검사할 수 있는 로그가 필요합니다.

신뢰도도 중요합니다. 사용자는 업데이트가 거의 없을 때보다 예측할 수 없는 중단에 더 민감합니다. 앱이 업데이트가 smooth하게 진행되며 주요 변경 사항을 명확하게 설명하고 실제로 중단되거나 보안 위협이 발생하는 경우에만 사용을 제한할 때, 사용자는 이를 전문성으로 인식합니다.

업데이트 감지 구현과 Capgo

첫 번째 작업은 간단합니다: 사용자가 현재 어떤 버전을 실행하고 있는지, 사용자가 속한 채널을 알고, 업데이트가 필요한지 결정하는 것입니다. 대부분의 DIY 업데이트 시스템은 이러한 결정이 섞여서 복잡해집니다. 그들을 분리하세요.

https://capgo.app/blog/building-a-native-mobile-app-with-nextjs-and-capacitor

버전 인식부터 시작하세요

신뢰할 수 있는 업데이트기는 런타임 시에 다음 세 가지 값을 사용할 수 있어야 합니다:

  1. 설치된 앱 버전
  2. assign된 릴리스 채널
  3. 현재 업데이트 상태예를 들어, idle, checking, available, downloading, ready, failed

상태 모델을 생략하면, 알림 버그가 빠르게 나타난다. 앱이 너무 자주 체크를 하며, 동일한 알림이 매번 실행할 때마다 나타난다. 배경 다운로드가 완료되었지만, UI는 여전히 “체크 중”이라고 나타난다.

관리 서비스는 일반적으로 이 경우에 적절한 선택이다. 이유는 code Snippet에서 제시된 것보다 운영 작업이 더 복잡하기 때문이다. signed bundle, channel rule, rollback support, version history, device-level log, delivery infrastructure가 필요하다. Capgo Capgo는 Capacitor 및 Electron 앱을 위한 업데이터 플러그인과 호스팅된 배포 워크플로를 제공한다. 따라서 대부분의 클라이언트 팀은 내부적으로 스택을 재구축하는 것보다 사용하는 것이 더 좋다.

업데이터를 앱 시작 시에 연결한다.

앱이 시작될 때, 셸이 준비되면 가벼운 체크를 실행한다. 업데이트가 필요하지 않으면 첫 번째 화면을 블록하지 않는다.

Capacitor 앱의 일반적인 패턴은 다음과 같다.

import { App } from '@capacitor/app'
// import your updater SDK here

type UpdateDecision =
  | { kind: 'none' }
  | { kind: 'soft'; version: string }
  | { kind: 'hard'; version: string }
  | { kind: 'silent'; version: string }

async function checkForUpdate(): Promise<UpdateDecision> {
  try {
    // Replace with your updater SDK call
    const result = await updater.check()

    if (!result || !result.available) {
      return { kind: 'none' }
    }

    if (result.metadata?.mandatory === true) {
      return { kind: 'hard', version: result.version }
    }

    if (result.metadata?.silent === true) {
      return { kind: 'silent', version: result.version }
    }

    return { kind: 'soft', version: result.version }
  } catch {
    return { kind: 'none' }
  }
}

App.addListener('appStateChange', async ({ isActive }) => {
  if (!isActive) return
  const decision = await checkForUpdate()
  handleUpdateDecision(decision)
})

의 목적은 check() 그것은 단순히 “새로운 것이 있는가?”가 아니라 “이 사용자가 위해 새로운 것이 있는가?”이다. 이 사용자 이 채널 및 앱이 채널에 대한 반응을 어떻게 해야 하는지에 대해 설명합니다.

건전한 구현은 마지막으로 성공적으로 확인한 시간과 마지막으로提示된 버전을 저장합니다. 이는 앱 업데이트 알림 로직이 idempotent 하게 유지되도록합니다.

결과를 읽고 조건부로 분기하세요

분기는 가능한 한 결과와 가까운 곳에서 발생해야합니다. 업데이트 규칙을 여러 화면에 흩어지지 않게합니다.

실제로 사용하는 분리는 다음과 같습니다:

  • 업데이트가 없습니다. 소프트 업데이트
  • 소프트 업데이트 silent update
  • 배경에서 다운로드하고 다음 런칭 시 활성화합니다. 업데이트가 없다는 것은 아무것도 하지 말고 일반적인 확인 결과를 로깅합니다.
  • 업데이트 means app to controlled blocking flow into switch.

Later in the implementation, I like to central store through expose that decision so React, Vue, or Ionic UI can consume it consistently.

이 가이드는 Capacitor 앱의 더 넓은 설정을 보려는 경우 유용합니다.

업데이트 감지层은 단순하게 유지하세요. 롤플로우 정책에 지혜를 두세요, 시작 code에만 단순하게.

Effective Notification Design Pattern

The environment is already crowded.

Business of Apps’ Airship benchmark summary reports that the average U.S. smartphone user receives 46 daily push notifications , while average push reaction and click-through rates remain modest atNotification Pattern Designing Effectiveness 3.4% iOS 그리고 4.6% Android. 사용자에게 지속적인 방해를 주지 않으면서 앱 업데이트 알림을 받을 수 있도록해야합니다.

3 가지 효과적인 모바일 앱 업데이트 알림 패턴을 보여주는 인포그래픽입니다: 배너, 모달 다이얼로그, 앱 내 메시지.

사용 가능한 가장 간섭이 적은 패턴을 사용하십시오.

좋은 업데이트 UI는 방해의 비용을 존중합니다. 사용자가 결제 정보를 입력하고 있거나, 환자 기록을 입력하거나, 재고를 스캔하고 있다면, 모달은 고쳐야 할 버그보다 나을 수 있습니다.

나는 이런 패턴을 다음과 같이 매핑합니다:

  • 상단 또는 하단 배너 소규모 수정, 낮은 긴급성 개선, 무음 업데이트 확인을위한
  • 토스트 배경 상태, 예를 들어 “다음 런칭에서 업데이트 준비되었습니다.”, 그러나 중요하지 않은 결정에 사용하지 마십시오.
  • 설정 또는 프로필 진입점 컨트롤과 변경 로그 가시성을 원하는 사용자들을 위한.
  • 차단 모달 오래된 버전에서 안전하게 계속할 수 없을 때만.

드라마틱한 모달보다 훨씬 더 많은 작업을 수행하는 서브틀 배너가 종종 있습니다. 사용자가 인터페이스와 싸울 필요가 없습니다.

주요 패턴의 빠른 비교

패턴 좋은 점 주된 위험 implementaion 노트
배너 선택적 업데이트, 낮은 긴급성의 유도 쉽게 무시할 수 있습니다. 버전별로 무시를 유지합니다.
토스트 배경 상태 변경 너무 빠르게 사라집니다. 강력한 설정 항목과 pair합니다.
앱 내 메시지 상황에 맞는 기능 출시 빠르게 보이지 않을 수 있습니다. 관련된 화면과 연결합니다.
모달 필수적인 액션 사용자 불만 어려운 게이트만 예약

implementation detail이 가장 중요한 것은 상태 유지. 사용자가 "나중에" 탭을 누르면, 제공된 버전을 저장하세요. 사용자가 배너를 무시하면, 모든 경로 변경 시 다시 표시하지 마세요. 이 점을 잊으면, 업데이터가 작동하는 경우에도 사용자가 앱이 깨진 것처럼 느낄 수 있습니다.

팀이 이미 푸시를 라이프 사이클 스택의 일부로 사용하고 있다면, 앱 업데이트 UX를 더 광범위한 메시징 설정과 비교하는 것이 가치가 있습니다. Capgo의 아이오닉과 Capacitor 푸시 알림과 Firebase 은 여기서 유용합니다. 이 가이드는 transport concerns와 사용자가 앱 내에서 행동을 요청하는 표면을 분리하는 데 도움이 됩니다.

푸시만이야

일반적인 실수는 OS-level 업데이트 배지와 스토어 알림이 모든 것을 커버할 것이라고 가정하는 것입니다. 그러나 실제로 사용자는 장치 설정, 배지 권한, 자동 업데이트 동작, 또는 전원 절약 모드 때문에 이러한 알림을 놓치기 쉽습니다. 따라서 스토어 생태계가 올바르게 작동하는 경우에도 앱 내 메시징이 여전히 중요합니다.

전자에서 이 점은 thậm chí 더 rõ ràng합니다. 데스크톱 사용자는 불편한 상태 지시자 대신 모달 인터럽션을 기대하지 않습니다. 작은 "업데이트 준비" 칩을 셸에 표시하는 것이 시스템 대화가 워크플로우 중간에 초점을 빼앗는 것보다 더 전문적일 수 있습니다.

최고의 패턴은 업데이트의 위험과 사용자가 현재 수행 중인 작업에 맞는 것입니다. 그 외의 모든 것은 연극입니다.

업데이트 흐름 자동화 및 사용자 선택

감지 및 UX 패턴이 구축된 후, 코어 시스템은 워크플로입니다. 이 내에서 팀은 종종 과도하게 자동화하여 제어를 잃거나, 지원 부담을 발생시키는 경우가 있습니다.

자동화된 앱 업데이트 워크플로의 세 가지 유형을 보여주는 다이어그램.

코드리오의 앱 유지 관리 지침 실용적인 릴리즈 리듬으로 2주에서 4주 간격으로 및 3개월에서 6개월 간격으로 중요한 보안 또는 안정성 문제에 대해 가장 적절한 정신 모델입니다. 릴리즈 유형에 따라 결정해야 합니다.위험도가 낮은 변경 사항에 대한 무음 업데이트

low-risk 변경의 무음 업데이트

Capacitor 앱에서 가장 미사용된 경로가 바로 silent update입니다. 스타일링, 복사본, 기능 플래그 연결, 또는 중단되지 않은 자바스크립트 버그를 수정했다면, 사용자에게 중단하지 않고도 대부분의 경우 업데이트를 진행할 수 있습니다.

업데이트 흐름은 다음과 같습니다:

  1. 앱이 새로운 번들을 확인합니다.
  2. 업데이트가 배경 적용에 안전하다고 표시되면, 배경에서 다운로드합니다.
  3. 앱이 다음 로그인 시 새로운 번들을 활성화합니다.
  4. 재시작 후 사용자가 성공적으로 업데이트된 메시지를 볼 수 있거나, 아무것도 보지 않을 수 있습니다.

마지막 선택은 업데이트가 변경한 내용에 따라 달라집니다. 만약 업데이트가 가시적인 워크플로를 변경했다면, 다음 로그인 시 작은 '새로운 기능' 카드를 통해 사용자가 방향을 잡을 수 있습니다. 만약 그렇지 않았다면, 침묵이 괜찮습니다.

간단한 상태 핸들러는 다음과 같습니다:

async function handleUpdateDecision(decision: UpdateDecision) {
  if (decision.kind === 'silent') {
    await updater.download()
    await updater.setNextBundle()
    localStorage.setItem('pendingUpdateVersion', decision.version)
    return
  }

  if (decision.kind === 'soft') {
    showBanner(decision.version)
    return
  }

  if (decision.kind === 'hard') {
    showForcedUpdateScreen(decision.version)
  }
}

사용자 선택 흐름은 가시적인 제품 변경이 있을 때 사용됩니다.

사용자 선택 흐름은 업데이트가 충분히 변경되면 사용자가 중단을 허용해야 하는 경우에 사용됩니다. 새로운 네비게이션, 개정된 온보딩, 변경된 승인 흐름, 또는 대규모 데스크톱 리디자인 모두 이 그룹에 속합니다.

prompt는 좁아야 합니다:

  • 무엇이 변경되었나요
  • 왜 중요합니까?
  • 현재 업데이트하면 어떻게 되나요?
  • 지금은 기다리세요.

릴리스 노트를 다는 대신 단순한 문장과 두 개의 버튼으로 충분합니다.

이 패턴을 좋아합니다:

새 버전이 출시되었습니다. 업데이트된 보고서 워크플로우와 내보내기 문제를 해결했습니다. 지금 업데이트하거나 나중에 설치하세요.

‘나중에’를 신중하게 사용하세요. 이전 클라이언트가 유효한 경우 사용자가 계속 진행할 수 있도록 해주세요. 이전 클라이언트가 API 마이그레이션으로 인해 깨질 경우 옵션처럼 보이지 마세요.

애플리케이션 배포 이외의 관리에 대한 팀이 생각하고 있다면, 동일한 논리는 보안 운영에 나타납니다. 좋은 자동화는 일상적인 변경 사항을 조용히 처리하고 위험한 경우에만 인간의 중재를 의도적으로 합니다. 그 이유 중 하나는 SOC 팀을 위한 보안 자동화 개요입니다. 보안 자동화 이 보안 자동화 개요는 보다 광범위한 설계 원칙을 보여줍니다: 이벤트를 분류하고 안전한 경로를 자동화하고, 인간의 중재를 의도적으로 하세요.

또한 사용자 로직을 사용하여 앱 업데이트의 사용 빈도 세그멘테이션에 대한 Capgo의 기사를 참조하세요. __CAPGO_KEEP_0__ 실제 사용자와 간헐적인 사용자가 항상 동일한 타이밍이나 알림 스타일을 받지 않아야 합니다.

강제 업데이트 (Forced updates)

강제 업데이트은 합리적입니다. 그러나 남용하기도 쉽습니다.

다음 중 하나가 참일 때 강제 게이트를 사용하세요:

조건 강제 업데이트
보안 패치에 알려진 취약점이 있습니다. 네
중요한 오류로 인한 안정성 문제 네
뒤집힌 백엔드 계약 네
UI 소프트웨어 개선 아니요
선택적 기능 출시 아니요

구현은 명확해야 합니다. 런칭 시 설치된 버전을 확인하고, 지원하는 최소 버전과 비교하여 사용자가 그 아래에 있는 경우에만 사용자를 차단 상태로 만듭니다. '필수'를 '새 버전이 존재한다'에서 추론하지 마세요.

강제 업데이트 화면에는 세 가지 속성이 필요합니다:

  • 사용자가 막히지 않도록. 사용자에게 다시 시도할 수 있는 명확한 경로를 제공하십시오.
  • 명확한 설명. 사용자에게 업데이트 이유를 설명하십시오.
  • 네트워크가 불안정할 때. 네트워크가 불안정할 때도 사용자에게 설명하십시오.

업데이트가 실패하는 것은 모바일 데이터가 불안정할 때 모달 창에 하나의 "업데이트" 버튼이 실패할 때 나타나지 않는다는 것입니다. 앱이 차단된 경우 회복 경로가 일반 경로보다 더 정제되어야 합니다.

채널과 센서를 사용한 고급 롤아웃

업데이트 사고가 대부분 실패 감지 때문이 아니라 팀이 업데이트를 배포하기 전에 업데이트가 어떻게 작동하는지 배포하기 전에 배포하는 경우입니다.

채널을 기반으로 한 롤아웃은 클라이언트 앱에서 라이브 업데이트를 배포하는 가장 안전한 방법입니다. 모든 사용자에게 하나의 패키지를 배포하는 대신 내부, QA, 베타, 스테이징, 프로덕션, 또는 고객별 스트림과 같은 대상에게 배포합니다.

이것은 패키지의 배포 형태를 운영 제어와 같은 형태로 보이게 합니다. 하나의 빌드는 대상 순서에 따라 이동할 수 있으며, 각 대상이 다음 그룹이 볼 때 자신감을 주는 것입니다.

업데이트 워크플로우와 관련된 계획 구조에 대한 상업적인 롤아웃 모델의 유용한 스크린샷은 아래에 있습니다.

스크린샷: https://__CAPGO_KEEP_0__.app/pricing

스크린샷: https://capgo.app/pricing

Adapty의 푸시 알림 최적화 가이드 보고서가 보고서 제출 __CAPGO_KEEP_0__ 그리고 고급 목표 설정은 반응률을 3배로 높일 수 있습니다. 업데이트 시스템에서 이것은 채널에 대한 출시와 버전별 메시징을 의미하며, 전체 설치 기반에 대한 단순한 알림을 보내는 것이 아닙니다.

사용자가 실제로 이동했는지 여부를 알려주는 통계를 사용합니다

업데이트 시스템은 엔지니어링이 로그를 수동으로 확인하지 않고도 이러한 질문에 답해야 합니다:

  • 각 기기의 버전은 무엇인지?
  • 업데이트가 다운로드되었습니다?
  • 다음 런칭 시에 성공적으로 적용되었습니다?
  • 배포 후 런칭 실패율이 증가했습니다?
  • deprecated 버전에 갇힌 사용자는 누구인가?

통계는 업데이트를 출시 행위에서 운영 프로세스로 바꾸는데 도움이 됩니다. 통계가 없다면, 지원 팀은 제품 문제를 단순히 출시 문제로 오해할 것입니다. 통계가 있다면, 사용자가 어떤 버전을 사용하고 있는지 알 수 있습니다.

지원 팀이 업데이트 상태를 볼 수 없다면, 제품 문제를 출시 문제로 오해할 것입니다.

나는 단일 기기별 시간선도보다 집계 전용 대시보드에 더 강력한 선호도를 가지고 있습니다. 집계된 수용곡선은 유용하지만, 한 기업 고객이 한 주 동안 오래된 버전의 앱을 여전히 열고 있는 이유를 설명하지 못합니다. 기기별 로그는 그렇습니다.

버전별 배포가 더 실용적이게 되면, 특정 계층을 분리할 수 있습니다. 이 안내서에 대한 특정 버전을 사용자에게 보내는 방법은 일반적으로 여러 고객 환경을 지원하는 기업 팀이 종종 필요한 kinds of 제어의 좋은 예입니다.

CI/CD는 빌드만 수행하는 것 이상으로 배포하고 관찰해야 합니다.

최신 pipeline은 빌드가 성공적으로 완료된 경우에만 멈추어야 합니다. 그것은:

  1. 버블을 빌드해야 합니다.
  2. 그것을 올바른 채널에 서명하고 배포해야 합니다.
  3. 릴리즈 메타데이터를 첨부해야 합니다.
  4. 수용과 실패를 모니터링해야 합니다.
  5. 건강이 악화되면 롤백해야 합니다.

롤백은 데모 업데이터와 프로덕션 업데이터 사이의 차이입니다. 버블이 런치 크래시나 시작 데드락을 유발하면 팀이 빠르게 폭파 반경을 막을 수 있는 방법이 필요합니다. 그게 가장 큰 이유로 대부분의 기관에서 관리 도구가 DIY보다 우수한 이유입니다. 배달, 경계, 관찰성, 롤백은 부가 기능이 아닙니다. 그것들은 시스템입니다.

CI/CD 통합 자체가 복잡하지 않아도 됩니다. 중요한 것은 배포가 결정적이고 추적 가능해야 합니다. 릴리스는 커밋, 환경, 액터, 채널에 대한 책임을 지어야 합니다. 만약에 그 네 가지 질문에 빠르게 대답할 수 없다면, 사고 대응이 난잡해집니다.

통지 알림 문제 해결

Capacitor 및 Electron 업데이트 작업에서 반복적으로 나타나는 문제입니다. 대부분의 문제는 상태漂移에서 오는 것이고 네트워크에서 오는 것이 아닙니다.

앱이 시작될 때마다 알림이 나타납니다

증상: 사용자가 앱 업데이트 알림을 무시하거나 지연시키지만, 앱이 열릴 때마다 다시 나타납니다.

가능한 원인: 성공적으로 확인하고 있지만, 제공된 버전에 대한 알림 상태를 영구적으로 저장하지 않습니다.

해결: 사용자가 무시하거나 지연시킨 버전을 저장하고, 다시 UI를 표시하기 전에 비교하십시오.

function shouldPrompt(version: string): boolean {
  const dismissed = localStorage.getItem('dismissedUpdateVersion')
  return dismissed !== version
}

function dismissPrompt(version: string) {
  localStorage.setItem('dismissedUpdateVersion', version)
}

이것은 팀이 '사용 가능'과 '중단해야 함'을 혼동하는 곳입니다. 그것들은 다른 결정입니다.

침묵 업데이트 다운로드하지만, 활성화되지 않습니다

증상: 로그에서 볼 수 있듯이, 업데이트 패키지가 다운로드되었지만 이전 UI가 계속 로드되는 것을 볼 수 있습니다.

가능한 원인: 앱이 업데이트 다운로드를 완료했지만 다음 런칭을 위해 업데이트 표시를 하지 않았거나, 또는 마지막 활성화 패키지의 시작 경로가 여전히 포인트를 가리키고 있습니다.

수정 방법: 활성화를 명시적으로 처리하고 부트 시 확인하십시오. code와 분석에서 '다운로드'와 '활성화'를 별개의 상태로 모델링하십시오.

많은 버그가 lifecycle 모델을 boolean 하나로 모델링하는 대신 available -> downloading -> ready -> active 체크는 개발자 모드와 프로덕션 모드에서 다르게 동작합니다.

업데이트 감지 기능은 릴리스 빌드에서 작동하지만 로컬 개발 환경에서 작동하지 않거나, 그 반대도 가능합니다.

증상: 업데이트 감지 기능은 릴리스 빌드에서 작동하지만 로컬 개발 환경에서 작동하지 않거나, 그 반대도 가능합니다.

가능한 원인: 환경에 따라서 구성. 다른 채널 이름, 디버그 모드에서 비활성화된 플러그인, 또는 시작 code 잘못된 감시자에 wrap.

Fix: 환경 동작을 보이도록 하세요. 로그 채널, 앱 버전, 및 빌드 모드 시작 시 표시. 메모리에 의존하지 마세요.

  • 개발 빌드 일반적으로 live update 확인을 피하거나 전용 테스트 채널을 가리켜야 합니다.
  • 스테이징 빌드 제품화와 유사하게 동작해야 하지만 격리된 롤아웃 스트림에 대해 테스트해야 합니다.
  • 제품화 빌드 내부 QA 트래픽과 채널을 공유하지 않아야 합니다.

사용자는 네트워크가 연결되지 않은 상태에서 체크합니다.

증상: 사용자가 네트워크가 연결되지 않은 상태에서 앱을 열면 업데이트 상태가 깨진 상태가 됩니다.

가능한 원인: 체크 경로가 네트워크 성공을 가정하고 실패를 오류 UI로 대체하는 대신 중립 상태로 대체하지 때문입니다.

수정: 강제로 업데이트되는 경우 오프라인 경로에 특별한 주의가 필요합니다. 최소 지원 버전이 이미 유효하지 않은 경우 앱이 블록되도록 유지해야 할 수 있습니다. 그 경우에 이유를 명확하게 설명하고 네트워크 연결이 돌아올 때 다시 시도하도록 액션을 제시해야 합니다. 업데이트가 선택적일 경우 임시 네트워크 손실로 사용자를 벌지 마십시오.

이러한 모든 경우의 반복되는 원칙은 간단합니다: 감지

정책

UI ,, 활성화, UI, and activationdebugging은 추측으로 변합니다.


팀이 Capacitor 또는 Electron 앱을 배포하고 업데이트 시스템에 채널, 서명된 배달, 롤백 보호 및 장치 수준 관찰성을 필요로 한다면 Capgo Capgo에 PR을 제출하는 경우

실시간 업데이트 기능이 릴리즈 인프라와 같은 기능을 제공하는 팀에게 적합하다.

Effective App Update Notification Strategies CI/CD 자동화 계획을 만드는 경우 __CAPGO_KEEP_0__ CI/CD CI/CD 자동화 계획을 만드는 경우 __CAPGO_KEEP_0__ CI/CD Capgo Native Builds Capgo Native Builds Capgo Capgo Capgo 통합 Capgo 통합을 위한 제품 워크플로우 CI/CD 통합 CI/CD 통합을 위한 구현 세부 정보 GitHub 액션 통합 GitHub 액션 통합을 위한 구현 세부 정보

Capacitor 앱의 실시간 업데이트

웹-layer 버그가 활성화된 경우, 앱 스토어 승인 대기 없이 Capgo를 통해 패치를 배포합니다. 사용자는 배경에서 업데이트를 받으며 네이티브 변경 사항은 일반적인 검토 경로를 유지합니다.

__CAPGO_KEEP_0__에서 인간 지원

시작하기

최신 블로그 게시물

Capgo는 전문적인 모바일 앱을 만들기 위해 필요한 최고의洞察력을 제공합니다.