콘텐츠로 건너뛰기

FAQ

여기에서 답변하지 않은 질문이 있다면 언제든 문의해 주세요! Discord에서 이슈를 제기하거나 질문하는 것 모두 가능합니다.

”코드 푸시”란 무엇인가요?

코드 푸시는 “무선 업데이트”(OTA)라고도 하며, Capacitor 개발자가 프로덕션 앱을 업데이트할 수 있게 해주는 클라우드 서비스입니다. Capgo는 현재 Android와 iOS에서 작동하며, 향후 Capacitor가 작동하는 모든 플랫폼에서 작동할 예정입니다.

“코드 푸시”는 MicrosoftExpo의 React Native 커뮤니티에서 사용하는 배포 기능의 이름을 참조한 것이며, 둘 다 Capacitor를 지원하지 않습니다.

번들과 릴리스의 차이점은 무엇인가요?

“릴리스”는 앱 스토어용 바이너리를 준비하는 것을 의미합니다. 나중에 번들을 생성하기 위해 Capgo는 앱 스토어에 배포된 정확한 바이너리를 알아야 합니다.

“번들”은 릴리스에 적용하여 새로운 코드로 업데이트할 수 있는 패치를 의미합니다. npx @capgo/cli app update 명령어는 로컬의 새로운 코드로부터 번들을 생성하여 사용자에게 배포하는데 사용됩니다.

로드맵은 무엇인가요?

우리의 프로젝트 보드는 공개되어 있으며 다음에서 확인할 수 있습니다: https://github.com/orgs/Cap-go/projects

우리 팀은 공개적으로 운영되므로 언제든지 우리가 무엇을 하고 있는지 확인할 수 있습니다. Github 이슈나 Discord를 통해 로드맵이나 우선순위에 대한 질문에 기꺼이 답변해 드리겠습니다.

Capgo를 팀과 함께 사용할 수 있나요?

네! 모든 요금제는 무제한 개발자를 지원합니다. 각 조직에 대해 앱 메트릭(MAU, 저장소, 대역폭)만 제한합니다.

자세한 내용은 Teams를 참조하세요.

Capgo가 소스 코드를 저장하나요?

아니요. Capgo 서버는 귀하의 소스 코드를 보지 않습니다. npx @capgo/cli app update를 실행할 때 npx @capgo/cli 도구는 앱 스토어에 보내는 것과 동일한 컴파일된 코드만 업로드합니다. 추가 보안이 필요한 경우 엔드 투 엔드 암호화를 사용하여 Capgo 서버에 업로드하기 전에 번들을 암호화할 수 있습니다.

개인정보 보호정책도 참조하세요: https://capgo.app/privacy

CI 시스템에서 Capgo를 사용할 수 있나요?

네. Capgo는 CI 시스템에서 사용하도록 설계되었습니다. Android와 Github ActionsIOS, 그리고 Gitlab에 대한 가이드를 발행했으며, 다른 CI 시스템도 비슷할 것입니다.

문제가 발생하면 GitHub 이슈나 Discord를 통해 문의해 주시기 바랍니다.

Firebase Remote Config나 Launch Darkly와는 어떤 관계가 있나요?

코드 푸시는 기기에 새로운 코드를 추가하거나 코드를 교체할 수 있게 합니다. Firebase Remote Config와 Launch Darkly는 모두 구성 시스템입니다. 새 버전을 배포하지 않고도 앱의 구성을 변경할 수 있게 해주지만, 코드를 교체하기 위한 것은 아닙니다.

이것이 추가하는 의존성 공간은 얼마나 되나요?

최근에 측정하지는 않았지만, 코드 푸시 라이브러리가 Capacitor 앱에 1메가바이트 미만을 추가할 것으로 예상됩니다. 이것이 우선순위가 될 때 더 작게 만들 수 있는 방법을 알고 있습니다. 크기가 문제가 된다면 알려주세요!

코드 푸시가 큰 애플리케이션에서도 작동하나요?

네. 코드 푸시로 업데이트할 수 있는 애플리케이션 크기에는 제한이 없습니다. 아래에 언급된 대로, Capgo는 크기에 관계없이 애플리케이션의 모든 JS 코드를 변경할 수 있습니다.

참고: 크기가 클수록 사용자가 업데이트를 다운로드하기 어려워집니다. 앱을 가능한 한 작게 유지하는 것을 권장합니다.

Capgo 코드 푸시를 어디에 사용할 수 있나요?

다음과 같은 다양한 용도로 사용되는 것을 보았습니다:

  • 프로덕션 앱의 긴급 수정
  • 이전 버전 앱 사용자에게 버그 수정 배포
  • 지속적인 배포(예: 매시간)

대부분의 앱 스토어는 앱의 동작을 크게 변경하는 코드 배포를 금지한다는 점에 유의하세요. 자세한 내용은 아래를 참조하세요.

Capgo에서 “MAU”는 어떻게 계산되나요?

MAU는 “월간 활성 사용자”입니다. 지난 30일 동안 서버에 접속한 모든 기기를 MAU로 계산합니다. 지난 30일 동안 서버에 접속하지 않은 기기는 계산하지 않습니다.

기기가 앱을 다시 설치할 때마다 새로운 MAU로 계산됩니다. 이는 Apple 스토어의 개인정보 보호 제한 때문에 발생합니다. 사용자가 앱을 재설치하면 같은 기기를 추적할 수 없습니다.

개발 중에는 앱을 재설치할 때마다 새로운 MAU가 계산됩니다.

TestFlight 다운로드나 Android에서 채널을 전환할 때도 마찬가지입니다. 앱 업데이트는 새로운 Device ID를 생성하지 않습니다.

첫 설정 후에는 중복 기기 수를 줄이기 위해 개발 기기와 에뮬레이터를 비활성화하는 것을 권장합니다.

Capgo 코드 푸시를 사용할 수 없는 경우는 무엇인가요?

위에서 언급했듯이, Capgo는 앱 스토어 정책을 위반하는 데 사용해서는 안 됩니다. 자세한 내용은 아래를 참조하세요.

또한 Capgo는 네이티브 코드(예: Android의 Java/Kotlin 또는 iOS의 Objective-C/Swift) 변경을 지원하지 않습니다. 네이티브 코드를 변경한 경우 업데이트를 시도하는 동안 도구가 경고를 표시합니다.

Capgo가 스토어에 제출해 주나요?

Capgo는 현재 앱 스토어에 자동으로 제출하는 기능을 지원하지 않습니다. 향후 이 기능을 추가할 계획이지만, 현재는 기존 프로세스를 계속 사용하여 앱 스토어에 제출해야 합니다.

이 프로세스를 자동화하기 위해 Android CI 가이드iOS CI 가이드를 사용할 수 있습니다.

Capgo는 디스크에 무엇을 어디에 저장하나요?

Capgo 업데이터(앱 빌드 시 포함됨)는 capacitor가 코드를 로드할 수 있는 유일한 디렉토리에 최신 다운로드된 번들을 캐시합니다. Android에서는 /data/user/0/comexampleapp/code_cache/capgo_updater에 있지만, 해당 경로의 기본은 Android 시스템에서 제공되며 런타임에 동적으로 변경될 수 있습니다. iOS 기기에서는 데이터가 Library/Application Support/capgo 아래에 저장됩니다.

Capgo 명령줄 도구(예:npx @capgo/cli app update)는 npm 캐시에 디스크에 설치되며, 로그인 정보는 홈 디렉토리의 ~/capgo에 저장됩니다.

Capacitor Hot Reload와 어떤 관계가 있나요?

Capacitor의 Hot reload는 개발 단계에서만 사용하는 기능이며, Code push는 프로덕션용입니다.

Hot reload는 개발 중에 기기에서 코드를 변경할 수 있게 해주는 Capacitor의 기능입니다. 로컬 머신에 연결하기 위한 프록시로 Capacitor 앱을 빌드해야 합니다.

Code push는 프로덕션 환경에서 기기의 코드를 변경할 수 있게 해주는 기능입니다. 플랫폼에 따라 다양한 기술을 사용하여 이를 가능하게 합니다.

Capgo code push는 어떤 종류의 변경을 지원하나요?

Capgo는 애플리케이션의 모든 JS 코드를 변경할 수 있습니다. 앱 코드와 생성된 코드가 포함됩니다. 네이티브 코드 변경이 필요하지 않은 한 packages.json의 의존성도 업데이트할 수 있습니다.

네이티브 코드(예: Android의 Java/Kotlin 또는 iOS의 Objective-C/Swift) 변경을 지원할 계획은 없으며, 네이티브 코드가 변경된 것이 감지되면 번들에 포함되지 않을 것이라고 도구가 경고할 것입니다.

웹을 지원하나요?

웹은 이미 이러한 방식으로 작동하기 때문에 code push가 필요하지 않습니다. 사용자가 웹 앱을 열 때 필요한 경우 서버에서 최신 버전을 다운로드합니다.

웹에서 code push가 필요한 사용 사례가 있다면 알려주세요!

iOS, Android, Mac, Windows, Linux 등에서 작동하나요?

네.

지금까지는 Android와 iOS 지원에 집중했지만, code push는 결국 Capacitor가 작동하는 모든 곳에서 작동할 것입니다. 더 많은 플랫폼으로 확장하기 전에 code push를 안정적이고 안전하게 제공하는 데 필요한 모든 인프라를 구축하고 있습니다.

Capgo는 어떤 OS 버전을 지원하나요?

Capgo는 Capacitor가 지원하는 것과 동일한 Android 버전을 지원합니다.

Capacitor는 현재 Android API 레벨 22+ 및 iOS 13.0+를 지원합니다: https://capacitorjs.com/docs/main/reference/support-policy

Capgo는 어떤 버전의 Capacitor를 지원하나요?

Capgo는 현재 Capacitor의 최신 안정 릴리스만 지원합니다. 시간이 지남에 따라 유지 관리하는 데 필요한 인프라를 아직 구축하지 않았기 때문에 Capacitor의 이전 버전도 지원할 수 있습니다. 앞으로 더 많은 버전의 Capacitor를 지원할 예정이며, 엔터프라이즈 고객을 위해 모든 버전을 지원할 계획입니다. https://github.com/Cap-go/capgo/issues/1100

Capgo는 Flutter 안정 버전을 추적하며 일반적으로 안정 릴리스 후 몇 시간 이내에 업데이트됩니다. 이러한 업데이트를 수행하는 시스템은 자동화되어 있으며 실행하는 데 몇 분이 걸립니다. 그런 다음 서버에 게시하기 전에 추가 수동 확인 단계를 수행합니다.

App/Play Store 검토 프로세스나 정책과 어떤 관련이 있나요?

개발자는 해당 스토어를 선택할 때 스토어 제공업체와의 계약을 준수해야 합니다. Code push는 개발자가 iOS 및 Android의 스토어 정책을 준수하면서 앱을 업데이트할 수 있도록 설계되었습니다. React Native에서 사용 가능한 다양한 상용 제품과 유사합니다(예: Microsoft, Expo)

Microsoft도 그들의 솔루션이 앱 스토어를 준수하는 방법에 대한 가이드를 게시합니다: https://github.com/microsoft/react-native-code-push#store-guideline-compliance

Code push는 앱 스토어 전반에 걸쳐 널리 사용되는 기술입니다. 제가 알고 있는 모든 대형 앱들이 code push를 사용합니다. 주의해야 할 주요 정책은 앱의 동작을 크게 변경하지 않는 것입니다. 자세한 내용은 아래를 참조하세요.

Capgo는 Play Store 가이드라인을 준수하나요?

네.

Play Store는 업데이트 도구와 관련하여 두 가지 제한 사항을 제공합니다.

  1. 업데이트는 인터프리터 또는 가상 머신을 사용해야 합니다(Capgo는 Dart Virtual Machine 사용) https://support.google.com/googleplay/android-developer/answer/9888379?hl=en
<span><span> An app distributed via Google Play may not modify, replace, or update itself</span><br></span><span><span> using any method other than Google Play's update mechanism. Likewise, an app</span><br></span><span><span> may not download executable code (such as dex, JAR, .so files) from a</span><br></span><span><span> source other than Google Play. *This restriction does not apply to code</span><br></span><span><span> that runs in a virtual machine or an interpreter* where either provides</span><br></span><span><span> indirect access to Android APIs (such as JavaScript in a webview or</span><br></span><span><span> browser)</span><br></span><span><span></span><br></span><span><span> Apps or third-party code, like SDKs, with interpreted languages (JavaScript,</span><br></span><span><span> Python, Lua, etc.) loaded at run time (for example, not packaged with the</span><br></span><span><span> app) must not allow potential violations of Google Play policies</span><br></span>
  1. 앱의 변경 사항은 기만적이어서는 안 됩니다(예: 업데이트를 통한 앱의 목적 변경) https://support.google.com/googleplay/android-developer/answer/9888077 앱을 통해 제공하는 내용에 대해 사용자에게 명확히 알리고 Capgo를 통한 중요한 동작 변경으로 사용자의 기대를 위반하지 마세요.

Capgo는 Play Store 가이드라인과 호환되도록 설계되었습니다. 하지만 Capgo는 도구이며, 다른 도구와 마찬가지로 남용될 수 있습니다. Play Store 가이드라인을 위반하기 위해 의도적으로 Capgo를 남용하는 것은 Capgo 이용 약관을 위반하는 것이며 계정이 해지될 수 있습니다.

마지막으로, code push 서비스는 업계에서 널리 사용됩니다(제가 알고 있는 모든 대형 앱이 사용합니다)하며 공개적으로 사용 가능한 여러 code push 서비스가 있습니다(예: expo.dev & appcenter.ms). 이는 잘 확립된 경로입니다.

Microsoft도 그들의 react native “codepush” 라이브러리가 앱 스토어를 준수하는 방법에 대한 가이드를 게시합니다: https://github.com/microsoft/react-native-code-push#store-guideline-compliance

Capgo는 App Store 가이드라인을 준수하나요?

네.

Play Store와 마찬가지로 App Store도 기술적 및 정책적 제한 사항을 제공합니다.

<span><span>3.2.2</span><br></span><span><span>해석된 코드는 애플리케이션에 다운로드될 수 있지만 다음과 같은 코드인 경우에만 가능합니다:<br></span><span><span>(a) App Store에 제출된 애플리케이션의 의도된 목적과 일치하지 않는 기능을 제공함으로써 애플리케이션의 주요 목적을 변경하지 않음<br></span><span><span>(b) 다른 코드나 애플리케이션을 위한 스토어나 상점을 만들지 않음<br></span><span><span>(c) OS의 서명, 샌드박스 또는 기타 보안 기능을 우회하지 않음<br></span>
Capgo는 iOS에서 업데이트를 위한 인터프리터 전용 제한을 준수하기 위해 커스텀 Dart 인터프리터를 사용합니다. 업데이트를 통해 기만적인 행위(예: 업데이트를 통한 앱 목적 변경)를 하지 않는 한, Capgo(또는 다른 코드 푸시 솔루션)를 통한 업데이트는 업계의 표준 관행이며 App Store 가이드라인을 준수합니다.
App Store 가이드라인을 위반하기 위해 Capgo를 의도적으로 악용하는 것은 Capgo [서비스 약관](https://capgo.app/tos/)을 위반하는 것이며 계정이 해지될 수 있습니다.
Microsoft도 그들의 react native "codepush" 라이브러리가 앱스토어를 준수하는 방법에 대한 가이드를 제공합니다: [https://github.com/microsoft/react-native-code-push#store-guideline-compliance](https://github.com/microsoft/react-native-code-push/#store-guideline-compliance)
### 내 국가에서 Capgo를 사용할 수 있나요?[](https://capgo.app/docs/faq/#can-i-use-capgo-in-my-country "Direct link to Can I use Capgo in my country?")
우리는 어떤 국가에서도 Capgo 접근을 제한하지 않았습니다.
일부 국가에서는 국가 내에서 접근할 수 있는 URL에 제한이 있다는 것을 인지하고 있습니다. Capgo는 현재 R2 스토리지와 Cloudflare 워커를 포함한 Cloudflare Cloud를 호스팅에 사용합니다.
Capgo가 사용하는 URL은 다음과 같습니다:
- [https://apicapgoapp](https://apicapgoapp/) -- `npx @capgo/cli` 명령줄 도구가 Capgo 서버와 상호작용하고 사용자 기기의 Capgo 업데이터가 업데이트를 확인하는데 사용됩니다
- [https://*r2cloudflarestoragecom](https://*r2cloudflarestoragecom/) -- `npx @capgo/cli` 명령줄 도구가 번들을 업로드하고 다운로드하는데 사용됩니다
이러한 URL들이 모두 귀하의 국가에서 접근 가능하다면 Capgo는 작동할 것입니다.
만약 귀하의 지역에서 이러한 URL들의 접근을 차단해야 한다면, 알려주시면 해결책을 찾아보겠습니다. 프록시 서버가 한 가지 옵션입니다.
### Capgo를 자체 호스팅할 수 있나요?[](https://capgo.app/docs/faq/#can-i-self-host-capgo "Direct link to Can I self-host Capgo?")
네, Capgo를 자체 호스팅할 수 있습니다. 가이드는 아직 작성되지 않았지만, 코드는 오픈 소스이며 [https://github.com/cap-go/capgo](https://github.com/cap-go/capgo/)에서 이용 가능합니다.
### 코드 푸시가 작동하려면 인터넷이 필요한가요?[](https://capgo.app/docs/faq/#does-code-push-require-the-internet-to-work "Direct link to Does code push require the internet to work?")
네. 일반 인터넷과 별도로 업데이트를 배포하기 위한 서버를 운영할 수도 있지만, 기기에 업데이트를 전송하려면 어떤 형태든 네트워크 연결이 필요합니다.
### 네트워크 연결이 없을 때 Capgo는 어떻게 영향을 받나요?[](https://capgo.app/docs/faq/#how-is-capgo-affected-by-lack-of-network-connectivity "Direct link to How is Capgo affected by lack of network connectivity?")
Capgo 업데이터(Capgo로 앱을 빌드할 때 앱에 포함됨)는 네트워크 연결 문제에 대응할 수 있도록 설계되었습니다.
기본 업데이트 동작에서, 애플리케이션이 실행될 때 Capgo 업데이터에 알리고, 이는 Capgo 서버에 업데이트를 요청하기 위한 네트워크 요청을 별도의 스레드에서 실행합니다. 우리는 의도적으로 애플리케이션이 수행할 수 있는 다른 작업을 차단하지 않기 위해 별도의 스레드를 사용합니다. 네트워크 요청이 실패하거나 시간 초과되면, 업데이터는 다음 애플리케이션 실행 시 다시 확인을 시도합니다.
Capgo 명령줄 도구(예: `npx @capgo/cli app update`)는 작동하기 위해 네트워크 연결이 필요합니다. Capgo를 사용하여 앱을 배포하는 경우, CI 시스템이 네트워크 연결을 가지고 있는지 확인해야 합니다.
### 사용자가 오랫동안 업데이트하지 않고 업데이트를 놓치면 어떻게 되나요?[](https://capgo.app/docs/faq/#what-happens-if-a-user-doesnt-update-for-a-long-time-and-misses-an-update "Direct link to What happens if a user doesn't update for a long time and misses an update?")
우리의 구현은 항상 요청하는 기기에 맞춤화된 업데이트를 전송하여 요청자를 항상 사용 가능한 최신 버전으로 업데이트합니다. 따라서 사용자가 한동안 업데이트하지 않으면 중간 업데이트를 "놓치게" 됩니다.
업데이트 서버는 애플리케이션의 필요에 따라 다음 증분 버전이나 최신 버전으로 응답하도록 변경될 수 있습니다. 대체 업데이트 동작이 중요하다면 알려주시기 바랍니다.
### Capgo는 Capacitor와 어떤 관계가 있나요?[](https://capgo.app/docs/faq/#how-does-capgo-relate-to-capacitor "Direct link to How does Capgo relate to Capacitor?")
Capgo는 코드 푸시를 추가하는 Capacitor 플러그인입니다. Capgo는 Capacitor의 대체품이 아닙니다. 이미 알고 있고 좋아하는 Capacitor 도구를 계속 사용할 수 있습니다.
우리는 Capacitor의 최신 안정 릴리스를 추적하고 코드 푸시 플러그인이 이와 함께 작동하도록 업데이트합니다.
### 업데이트는 언제 발생하나요?[](https://capgo.app/docs/faq/#when-do-updates-happen "Direct link to When do updates happen?")
기본적으로 Capgo 업데이터는 앱 시작 시 업데이트를 확인합니다. 백그라운드 스레드에서 실행되며 UI 스레드를 차단하지 않습니다. 모든 업데이트는 사용자가 앱을 사용하는 동안 설치되며 앱이 다음에 재시작될 때 적용됩니다.
[package:capgo_code_push](https://pubdev/packages/capgo_code_push/)를 사용하여 Capgo 업데이터를 수동으로 실행할 수도 있으며, 이를 통해 푸시 알림을 포함한 언제든지 업데이트를 트리거할 수 있습니다.
Capgo 업데이터는 네트워크를 사용할 수 없거나 서버가 다운되었거나 도달할 수 없을 때도 앱이 정상적으로 계속 실행되도록 설계되었습니다. 서버에서 업데이트를 삭제하기로 결정한 경우에도 모든 클라이언트는 정상적으로 계속 실행됩니다.
패치를 롤백하는 기능을 추가했습니다. 가장 간단한 방법은 이전 번들을 채널에 다시 연결하여 실행 취소하는 것입니다.
### app_id를 비밀로 유지해야 하나요?[](https://capgo.app/docs/faq/#do-i-need-to-keep-my-app_id-secret "Direct link to Do I need to keep my app_id secret?")
아니요. `app_id`는 앱에 포함되어 있으며 공개해도 안전합니다. 버전 관리(공개적으로도)에 포함시킬 수 있으며 다른 사람이 접근하는 것에 대해 걱정할 필요가 없습니다.
귀하의 `app_id`를 가진 사람은 Capgo 서버에서 앱의 최신 버전을 가져올 수 있지만, 앱에 업데이트를 푸시하거나 Capgo 계정의 다른 측면에 접근할 수 없습니다.
### Capgo 서버로 어떤 정보가 전송되나요?[](https://capgo.app/docs/faq/#what-information-is-sent-to-capgo-servers "Direct link to What information is sent to Capgo servers?")
Capgo가 네트워크에 연결되더라도 개인 식별 정보는 전송하지 않습니다. Capgo를 포함시키는 것은 Play Store나 App Store에 대한 선언에 영향을 미치지 않아야 합니다.
앱에서 Capgo 서버로 전송되는 요청에는 다음이 포함됩니다:
- app_id (`capacitorconfigjson`에 지정됨)
- channel (`capacitorconfigjson`에서 선택 사항)
- release_version (AndroidManifestxml의 versionName 또는 Infoplist의 CFBundleShortVersionString 또는 [`CapacitorUpdaterversion`](/docs/plugin/settings/#version)에서 설정된 경우 `capacitorconfigjson`)
- version_number (`npx @capgo/cli app update`의 일부로 생성됨)
- os_version (예: '1121')
- platform (예: 'android', 올바른 패치를 전송하는데 필요) 코드는 `updater/library/src/networkrs`에 있습니다
- device_id (첫 실행 시 기기에서 생성됨, 기기별 설치를 중복 제거하고 설치된 사용자 수에 기반하여 요금을 부과할 수 있게 함)월간 활성 사용자), 전체 패치나 전체 패치 설치가 아닌)
- custom_id (선택사항, 개발자가 런타임에 설정하며 사용자 시스템에서 기기를 사용자와 연결하는데 사용)
### Capgo는 어떤 플랫폼을 지원하나요?
현재 Capgo는 iOS와 Android를 지원합니다. 두 플랫폼 모두 프로덕션 준비가 되어있습니다.
Capgo의 iOS 또는 Android 사용은 독립적으로 결정할 수 있습니다. 채널에서 Android로 배포하고 App Store에 ipa를 빌드하거나 그 반대로 설정할 수 있습니다.
Capgo는 (비교적 쉽게) 데스크톱이나 임베디드 대상을 지원하도록 만들 수 있습니다. 이것이 중요하다면 알려주세요.
### Capgo는 Play 테스트 트랙이나 Apple TestFlight와 어떻게 상호작용하나요?
각 앱스토어는 제한된 사용자 그룹에게 앱을 배포하는 별도의 메커니즘("내부 테스트", "클로즈드 베타" 등)을 가지고 있습니다. 이는 모두 사용자를 그룹으로 분류하고 각 그룹에 특정 버전의 앱을 배포하는 메커니즘입니다.
안타깝게도, 이러한 메커니즘 중 일부는 특정 테스트 트랙이나 TestFlight를 통해 앱이 설치되었는지 제3자가 감지하는 것을 허용하지 않습니다. 따라서 이러한 그룹의 구성을 신뢰성 있게 파악할 수 없고, 이러한 그룹을 기반으로 Capgo 패치에 대한 접근을 제한할 수 없습니다. [https://stackoverflow.com/questions/53291007/can-an-android-application-identify-the-test-track-within-google-play](https://stackoverflow.com/questions/53291007/can-an-android-application-identify-the-test-track-within-google-play/) [https://stackoverflow.com/questions/26081543/how-to-tell-at-runtime-whether-an-ios-app-is-running-through-a-testflight-beta-i](https://stackoverflow.com/questions/26081543/how-to-tell-at-runtime-whether-an-ios-app-is-running-through-a-testflight-beta-i/)
Capgo 번들의 가용성을 분할하고 싶다면, 4가지 옵션이 있습니다:
1. 각 그룹마다 별도의 채널 사용. 이것이 가장 간단한 접근법이지만 여러 채널을 관리해야 합니다. 이미 다른 가용성을 가진 개발 채널과 프로덕션 채널이 있을 수 있습니다. 따라서 개발 채널을 업데이트하고 확인한 다음 별도로 프로덕션 채널을 업데이트할 수 있습니다. 각 릴리스와 관련된 소스를 추적하는데 버전 관리의 브랜치/태그를 사용하는 것을 추천합니다.
2. 자체 옵트인 사용자 목록을 추적하고 자동 업데이트를 비활성화한 다음 package:capgo_code_push를 통해 특정 사용자에게만 업데이트를 트리거. 현재 작동하지만 자체 옵트인 목록을 관리해야 합니다.
3. Capgo는 기기별로 자체 옵트인 메커니즘을 생성할 수 있습니다(테스트 트랙이나 TestFlight와 유사하지만 플랫폼에 구애받지 않음). 이를 통해 QA 팀이 일반 공개 전에 번들에 옵트인할 수 있습니다.
4. Capgo는 비율 기반 출시를 지원합니다. 어떤 기기에 전송할지 선택할 수는 없지만 점진적으로 출시하고 문제가 발생하면 롤백하는데 도움이 됩니다.
## 결제
### 플랜을 어떻게 업그레이드하거나 다운그레이드하나요?
대시보드에서 언제든지 플랜을 업그레이드하거나 다운그레이드할 수 있습니다: [https://webcapgoapp/dashboard/settings/plans](https://webcapgoapp/dashboard/settings/plans/)
### 결제 기간은 언제 재설정되나요?
결제 기간은 처음 Capgo를 구독한 달의 해당 일자에 매월 자동으로 재설정됩니다. 예를 들어, 15일에 구독했다면 매월 15일에 결제 기간이 재설정됩니다.
### 구독을 어떻게 취소하나요?
대시보드에서 언제든지 구독을 취소할 수 있습니다: [https://webcapgoapp/dashboard/settings/plans](https://webcapgoapp/dashboard/settings/plans/)
### 1년치를 미리 결제할 수 있나요?
대시보드에서 언제든지 가능합니다: [https://webcapgoapp/dashboard/settings/plans](https://webcapgoapp/dashboard/settings/plans/)
### 통계와 분석
대시보드의 통계는 매일 자정 UTC에 업데이트됩니다.
통계는 기기에 설치된 [MAU](https://capgo.app/docs/faq/#what-is-the-difference-between-a-bundle-and-a-release) 수를 기준으로 계산됩니다.
# 기기 ID는 어떻게 생성되나요?
기기 ID는 첫 실행 시 기기에서 생성되며, 기기별 설치를 중복 제거하고 전체 패치나 패치 설치가 아닌 설치된 사용자 수(예: 월간 활성 사용자)를 기준으로 과금할 수 있게 해줍니다.
MAU는 Capgo 가격 책정에 있어 설치 횟수보다 더 나은 솔루션입니다. 더 정확하고 기기당 실제 Capgo 비용을 반영하기 때문입니다.
개인정보 보호를 위해 사용자가 앱을 재설치할 경우 동일한 기기를 추적할 수 없습니다.
개인정보 보호 규칙은 Apple과 Google에 의해 시행되며 Capgo에 의해 시행되지 않습니다.
기기 ID는 첫 패치가 설치될 때까지 기기 목록에 표시되지 않습니다.
# 내 기기 수가 MAU와 다른 이유는 무엇인가요?
현재 기기 목록은 MAU만큼 자주 업데이트되지 않습니다.
기기 목록은 기기가 업데이트를 설치할 때만 업데이트됩니다.
반면 MAU는 앱이 실행될 때마다 업데이트됩니다. 이는 플랫폼의 현재 제한사항입니다. 분석 플랫폼이 원시 업데이트를 지원하지 않아 기기 목록에는 기존 데이터베이스를 사용합니다.
데이터베이스 쿼리 수를 제한하기 위해 앱 업데이트 시에만 행을 업데이트합니다.
이 제한사항은 향후 제거될 예정입니다.
# 플랫폼별로 다른 업데이트를 어떻게 할 수 있나요?
각 플랫폼별로 채널을 생성하고 각 채널에서 플랫폼별 업데이트를 비활성화할 수 있습니다.
iOS 채널에서는 Android 업데이트를 비활성화하고 Android 채널에서는 iOS 업데이트를 비활성화합니다.
그런 다음 각 채널에 번들을 업로드하여 각 플랫폼별로 다른 업데이트를 할 수 있습니다.
두 플랫폼에 동일한 업데이트가 필요한 경우 하나의 번들을 여러 채널에 연결할 수 있습니다. 번들을 복제할 필요가 없습니다.