유저가 즉시 검토 및 피드백을 받을 수 있도록 특정 사용자에게 변경 사항을 직접 배포할 수 있는 방법을 원하셨나요? TestFlight 또는 Google Play에서 새로운 빌드를 다운로드하고 설치하지 않아도 되도록?
저는 고객이 요청한 개선 사항을 빠르게 구현할 수 있었습니다. 그러나 결과를 고객이 검증할 수 있도록 업데이트를 모든 사용자에게 배포하거나 고객에게만 배포하는 일회용 빌드를 생성하는 것은 모두에게 부담이 되었습니다.
개발자들은 사용자 그룹에 따라 다른 업데이트를 제공하고 싶었습니다. 예를 들어 비기술적인 이해관계자, QA, 또는 적절한 경우 모든 사용자에게.
제품 빌드는 작업 중인 버전으로 전환할 수 없었습니다. 피드백을 수집하고 다시 프로덕션으로 돌아갈 수 없었습니다.
그것이 채널 전환 채널 전환은 앱이 사용자의 기기에 설치되어 런타임에서 업데이트 채널을 전환할 수 있게 해줍니다. 프로덕션 앱을 고정된 엔드포인트가 아닌 검토와 반복을 위한 유연한 공간으로 변환합니다. 특히 비기술적인 이해관계자가 프로덕션 앱을 사용하여 변경 사항을 테스트하고 직접 피드백을 줄 수 있도록 해줍니다.
업데이트 채널 이해하기
업데이트 채널은 Capgo가 특정 빌드에 업데이트를 대상으로 하는 방법입니다. 각 빌드는 채널과 관련이 있으며, 채널은 받을 수 있는 업데이트를 결정합니다.
예를 들어, 사용자에게 영향을 미치지 않는 채널에 업데이트를 게시할 수 있습니다. preview channel을 사용자에게 영향을 미치지 않고 production__CAPGO_KEEP_0__ 채널은 다음과 같은 기능을 제공합니다:
Capgo 채널은 다음과 같은 기능을 제공합니다: 1.
- 사용자를 다른 채널에 Assign하여 A/B 테스트를 수행
- 새로운 기능을 점진적으로 출시
- 베타 테스트 프로그램을 생성
- 개별 사용자와의 프로덕션 문제를 디버그
- 업데이트 채널에 대해 익숙하지 않다면, __CAPGO_KEEP_0__ 채널 문서
__CAPGO_KEEP_0__ Capgo __CAPGO_KEEP_0__
채널 스위칭이란?
채널 스위칭은 설치된 앱이 다른 업데이트 스트림으로부터 업데이트를 pulls 할 수 있도록 해줍니다. 설치된 앱은 런타임에 업데이트 채널을 Switch 할 수 있고, 새로운 채널로 선택된 채널에서 계속 업데이트를 받을 수 있습니다. 앱이 삭제되거나 다른 채널로 Switch 될 때까지.
실제로, 제품 관리자 또는 QA는 production 빌드를 preview 채널로 Switch 할 수 있습니다. 예를 들어, 최신 변경 사항을 테스트 할 수 있습니다. 테스트가 끝나면 다시 production 으로 Switch 할 수 있습니다. 재설치나 별도의 프리뷰 빌드가 필요하지 않습니다.
채널 스위칭은 앱이 업데이트 클라이언트에게 어떤 채널을 사용해야 하는지 알려주는 방식으로 작동합니다. 이 선택은 런타임에 변경될 수 있고, 삭제되거나 다른 채널로 Switch 될 때까지 유지됩니다.
채널 스위칭 구현 방법
채널 스위칭을 시도하기 전에 프로젝트가 Capgo Live Updates와 설정되어 있어야 합니다. 설정 방법은 Capgo quickstart guide를 따라하세요. 채널 스위칭을 위해 필요한 설정은 각 채널에 대해 "Allow devices to self associate"를 Capgo dashboard에서 허용하는 것입니다..
The only setup required for channel surfing is enabling “Allow devices to self associate” on each channel you want to switch to in the Capgo dashboard. code
API을 호출하는 단일 호출에 의해 채널 스위칭이 구동됩니다.
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({ channel: 'your-channel' });
이 설정은 Capgo에서 업데이트 쿼리 시 사용하는 채널을 설정합니다. setChannel API에 대한 자세한 내용.
Instant Channel Switching (v5.34.0+)
plugin 버전 5.34.0, 6.34.0, 7.34.0, 또는 8.0.0 (대부분 버전)에 따라 다음과 같이 작동합니다: setChannel() 데이터베이스 읽기 전용
- : __CAPGO_KEEP_0__ 백엔드에 요청을 보내 channel이 허용되는지 확인합니다.: Capgo 서버로 채널이 허용되는지 확인하는 요청이 전송됩니다.
- : 유효성 검사가 통과하면 장치의 로컬 스토리지에 채널을 저장합니다.즉시 효과
- (depending on your major version),: 다음 업데이트 확인은 새로운 채널을 즉시 사용합니다.
이전에는 setChannel() 저장된 채널 오버라이드가 백엔드 데이터베이스 (예: 대시보드 또는 API 변경)에 저장되었으며, 장치들은 백엔드 복제가 완료될 때까지 (최대 2분) 새로운 채널이 인식될 때까지 기다려야 했습니다. 새로운 동작은 백엔드에서만 읽고 (유효성 검사용) 로컬에서만 저장하므로 채널 Switching이 즉시 발생합니다.
채널 Switching 완전한 흐름
사용자 경험을 개선하기 위해, 채널 Switching만 하고 다음 앱 재시작을 기다리기보다 더 많은 작업을 수행하는 것이 일반적입니다. 일반적인 접근 방식은 채널 Switching 후 즉시 업데이트 확인, 다운로드, 앱 재로드를 수행하여 사용자가 선택한 채널의 업데이트에 직접 접근할 수 있도록 하는 것입니다.
일반적인 흐름은 다음과 같습니다.
- 채널 변경
setChannel) - 업데이트 확인
getLatest) - 업데이트 다운로드 및 적용
download,set또는next) - 앱 재로드가 필요하면
reload)
이러한 완전한 예제는 다음과 같습니다.
import { CapacitorUpdater } from '@capgo/capacitor-updater';
async function switchChannel(selectedChannel: string) {
try {
// 1. Set the updates channel (with optional auto-update trigger)
await CapacitorUpdater.setChannel({
channel: selectedChannel,
triggerAutoUpdate: true // Immediately check for updates
});
console.log(`Switched to channel: ${selectedChannel}`);
// If you want more control, handle the update manually:
// const latest = await CapacitorUpdater.getLatest();
// if (latest.url) {
// const bundle = await CapacitorUpdater.download({
// url: latest.url,
// version: latest.version
// });
// await CapacitorUpdater.set({ id: bundle.id });
// }
} catch (error) {
console.error('Failed to switch channel:', error);
}
}
// Switch to the beta channel
switchChannel('beta');
이 흐름을 어떻게 구조화하느냐는 당신의 선택입니다. 이러한 단계를 여러 상호 작용에 걸쳐 나누거나 한 번에 모두 실행할 수 있습니다. 흐름을 구조화하는 방법에 관계없이, 실패를 고려하도록 하세요. 네트워크 문제나 유효하지 않은 채널은 모두 업데이트를 적용하는 것을 방해할 수 있습니다.
단 하나의 요구조건: Self-Assignment을 활성화하세요
채널을 Switch하는 것은 이렇게만 하면 됩니다. 애플리케이션은 채널 Switching을 사용하기 전에 setChannel()Capgo 채널 Switching은 Capgo 대시보드에서 채널을 스위칭하는 방식입니다.
- 채널 Channels Capgo의 섹션
- 채널 이름을 클릭하세요
- 활성화 “기기 자체가 Self-Associate을 허용하도록 허용하세요”
- 변경 사항을 저장하세요

그것이 다입니다. 앱에서 설정 변경이 필요하지 않습니다. defaultChannel 설정할 필요가 없습니다. 사용자가 switch 할 수 있는 채널에서 자체 할당을 활성화하십시오.
이 설정이 비활성화되어 있다면, 이 채널을 호출하는 시도는 실패하고 setChannel() 이벤트가 발생합니다. channelPrivate 사용 가능한 채널 목록
자체 할당이 가능한 채널 목록을 가져올 수 있습니다:
이것은 자체 할당이 활성화된 채널만 반환합니다.
const { channels } = await CapacitorUpdater.listChannels();
console.log('Available channels:', channels.map(c => c.name));
// Use this to build a channel selector UI
현재 할당된 채널 확인
장치가 현재 어떤 채널에 할당되어 있는지 확인할 수 있습니다:
기본 채널로 되돌리기
const { channel } = await CapacitorUpdater.getChannel();
console.log('Current channel:', channel);
기본 채널로 되돌아갑니다.
기본 채널을 재설정하고 기본 설정으로 돌아가려면:
await CapacitorUpdater.unsetChannel({});
이것은 기기에 할당된 특정 채널을 해제하고 기본 채널로 돌아가게 합니다. defaultChannel 기본 설정 또는 클라우드 기본 설정에 있는
채널 스위칭 테스트 방법
채널 스위칭을 실제로 확인하려면 릴리즈 빌드를 필요로 합니다. @capgo/capacitor-updater API은 릴리즈 빌드에만 설계되었습니다. 디버그 빌드에서는 일반 업데이트 흐름을 우회하는 개발 서버에서 자바스크립트를 로드합니다.
기본 요구 사항
채널 스위칭을 위해 필요한 유일한 조건은 각 채널에서 ‘기기 자체 연관 허용’을 허용하는 것입니다. 기기 자체 연관 허용’을 허용하는 채널에서만 스위칭을 허용합니다.
설정 변경은 앱에서 필요하지 않습니다.
테스트 빌드 생성
bun run build && npx cap sync
그런 다음 Xcode 또는 Android Studio를 사용하여 네이티브 빌드를 생성하거나 CI/CD pipeline을 사용하세요. 앱은 Capgo 대시보드에서 cloud 기본 채널로 설정된 채널에서 시작됩니다.
다른 채널에 대한 업데이트를 게시하는 방법
앱이 설치된 후에는 다음 단계를 수행하여 다른 채널에 대한 업데이트를 게시할 수 있습니다:
# Publish to preview channel
npx @capgo/cli@latest bundle upload --channel preview
# Publish to production channel
npx @capgo/cli@latest bundle upload --channel production
앱에서 채널 전환 UI로 이동하여 채널 전환을 트리거하세요. 앱은 선택한 채널에서 업데이트를 가져와 새 업데이트로 다시 로드해야 합니다.
채널 전환 UI를 구축하는 방법
채널 전환은 일반적으로 사용자에게 노출되지 않도록 제한된 사용자만에게 노출하는 것이 좋습니다. 예를 들어, 인증된 직원만이 앱을 프리뷰 채널로 전환하는 버튼을 사용할 수 있습니다.
채널 전환 UI의 예제 React 컴포넌트
import { useState, useEffect } from 'react';
import { CapacitorUpdater } from '@capgo/capacitor-updater';
export function ChannelSwitcher() {
const [currentChannel, setCurrentChannel] = useState<string>('');
const [availableChannels, setAvailableChannels] = useState<string[]>([]);
const [isLoading, setIsLoading] = useState(false);
useEffect(() => {
loadChannelInfo();
}, []);
async function loadChannelInfo() {
const { channel } = await CapacitorUpdater.getChannel();
setCurrentChannel(channel || 'default');
const { channels } = await CapacitorUpdater.listChannels();
setAvailableChannels(channels.map(c => c.name));
}
async function handleChannelSwitch(channel: string) {
setIsLoading(true);
try {
await CapacitorUpdater.setChannel({
channel,
triggerAutoUpdate: true
});
setCurrentChannel(channel);
// App will update in background or on next restart
} catch (error) {
console.error('Failed to switch channel:', error);
} finally {
setIsLoading(false);
}
}
return (
<div>
<p>Current channel: {currentChannel}</p>
<div>
{availableChannels.map(channel => (
<button
key={channel}
onClick={() => handleChannelSwitch(channel)}
disabled={isLoading || channel === currentChannel}
>
Switch to {channel}
</button>
))}
</div>
</div>
);
}
OTA 업데이트에 대한 주의사항
이러한 문제는 채널 전환에 특이하지 않지만, 런타임 채널 전환을 시작하면 빠르게 나타납니다.
런타임 버전 불일치
Capgo 업데이트는 네이티브 앱 버전과 관련이 있습니다. 설치된 앱의 네이티브 버전과 업데이트의 네이티브 버전이 일치하지 않으면 업데이트가 다운로드되거나 적용되지 않습니다. 채널 전환 시, 앱이 채널을 전환하지만 업데이트가 적용되지 않는 경우가 있습니다. 업데이트가 존재하는 채널에서 업데이트가 적용되지 않는 이유는 업데이트가 다른 네이티브 버전의 앱에서 게시된 경우입니다.
이러한 문제는 업데이트가 다른 네이티브 버전의 앱에서 게시된 경우에 나타납니다. 채널의 번들 파일이 설치된 장치의 네이티브 버전과 호환되는지 확인하세요.
업데이트 제거 또는 취소
앱이 이미 채널에 대한 업데이트 다운로드를 완료한 경우 Capgo 대시보드에서 업데이트를 삭제하면 이미 업데이트를 받은 기기에 업데이트가 삭제되지 않습니다. 삭제는 미래의 다운로드만 중단합니다. 업데이트 업데이트
미래
Capgo also provides a rollback mechanism that can instruct clients to re-apply a previous stable update or fall back to the update embedded in the build.
업데이트를 취소하는 가장 신뢰할 수 있는 방법은 동일한 채널에 알려진 좋은 업데이트를 게시하는 것입니다. 이로 인해 채널의 역사에 새로운 업데이트가 생성되고, 클라이언트는 이 업데이트를 최신 버전으로 인식하고 대신 적용합니다.
__CAPGO_KEEP_0__은 클라이언트에게 이전에 안정적인 업데이트를 다시 적용하거나 빌드에 포함된 업데이트로 돌아가도록 지시하는 롤백 메커니즘도 제공합니다.
데이터 마이그레이션 고려 사항
채널 전환은 모바일 개발을 빠르게 개선하는 데 도움이 됩니다.
예를 들어, 베타 업데이트가 데이터베이스 마이그레이션을 적용한 경우, 프로덕션 버전은 새로운 스키마를 이해하지 못할 수 있습니다. 개발자는 업데이트가 채널 간에 전환할 수 있는지 확인하거나 필요할 때 전환을 한 방향으로 제한해야 합니다.
채널 서핑이 모바일 반복을 개선하는 이유
어떤 긴급한 버그 수정이 널리 배포되기 전에 검증이 필요할 때를 상상해 보세요. 채널 스위칭을 통해 변경 사항은 검토하기 전에 특정 사용자만에게만 적용할 수 있습니다. 그들은 변경 사항이 프로덕션에 도달하기 전에 검토할 수 있습니다.
주주자 검토
제품 소유자나 QA 담당자는 설치된 프로덕션 빌드를 다른 업데이트 채널로 Switch하고, 수정 사항이나 기능을 검증한 후 다시 Switch할 수 있습니다.
Streamlined Testing
이것은 검토와 의사결정을 위한 비기술적인 주주자 참여를 용이하게 하며, 워크플로우가 smooth하게 유지되도록 합니다. 단일 프로덕션 빌드는 테스트, 피드백 및 검증을 위한 유연한 도구가 됩니다.
사용 사례
- 테스트: QA 팀이 기능 branch 사이를 Switch할 수 있습니다.
- Beta 프로그램: 사용자가 베타 채널에 가입하여 출시 전EAR리 접근을 받을 수 있습니다.
- 주주자 검토: 제품 소유자가 변경 사항을 미리보기 하기 전에 출시를 할 수 있습니다.
- A/B 테스트: 사용자들을 실험을 위한 다른 채널에 할당합니다.
- 디버깅: 특정 사용자를 디버그 채널로 전환하여 문제를 진단합니다.
채널 변경 방법 비교
| 방법 | 효과 시간 | 저장 위치 | 사용 사례 |
|---|---|---|---|
setChannel() 플러그인 |
플러그인에서 | 즉시 적용됨 (Instant Apply, Device only (local)) | 사용자 지시한 채널 전환 |
| 대시보드 장치 우선 | 2분 이내 | 백엔드 데이터베이스 | 특정 장치에 대한 관리자 지시 변경 |
| API 채널 할당 | 2분 이내 | 백엔드 데이터베이스 | 자동화된 백엔드 통합 |
채널 전환 UI를 빌드할 때 최상의 사용자 경험을 제공하기 위해 항상 플러그인의 setChannel() 방법을 사용하십시오.
최선의 방법
- 제한 접근: 채널 전환은 일반적으로 내부 사용자에게만 제공되며 모든 사용자에게 노출시키지 마세요.
- 오류 처리: 채널 전환 시 항상 오류를 부드럽게 처리하세요.
- 호환성 확인: 설치된 네이티브 버전과 호환되는 업데이트를 다른 채널에서 확인하세요.
- 채널 문서화: 각 채널의 목적을 명확하게 문서화하세요.
- 사용량 모니터링: 디버깅을 위해 장치가 어느 채널에 있는지 추적하세요.
자원
결론
Capacitor 앱을 위한 채널 전환은 개발 방식을 완전히 바꿔줍니다. 이제 프로덕션 빌드가 고정된 엔드포인트가 아니라 테스트, 검증, 그리고 빠른 반복을 위한 유연한 도구로 사용할 수 있습니다.
최근 플러그인 버전에서 도입된 즉시 채널 전환 기능 덕분에 사용자는 이제 채널을 전환하고 새로운 채널에서 즉시 업데이트를 받을 수 있습니다. 기다리는 시간이 없습니다.
버그 수정을 검증하는 데 사용자와 함께 일하거나 베타 프로그램을 운영하거나 특정 사용자와 문제를 디버깅하는 등 채널 전환은 사용자에게 필요한 업데이트를 정확한 시간에 정확한 사용자에게 배포할 수 있는 유연성을 제공합니다.
Capgo 채널 전환을 위한 Channel Surfing: 런타임에서 업데이트 채널을 전환하는 방법
Channel Surfing for __CAPGO_KEEP_0__: 런타임에서 업데이트 채널을 전환하는 방법 Capgo: 채널 전환을 위한 Channel Surfing을 계속 사용하세요 - 런타임에서 업데이트 채널을 전환하는 방법 channel routing과 staged rollout을 계획하기 위해 연결하세요 Channels Channels 채널 Channels 채널 Channels 베타 테스트 솔루션 Channels 채널 버전 대상 솔루션