어떤 사용자에게 직접 변경 사항을 배포하고 즉시 검토 및 피드백을 받을 수 있는 방법이 있었으면 좋겠다고 생각해 본 적이 있나요? TestFlight 또는 Google Play에서 새로운 빌드를 다운로드하고 설치하지 않고.
저는 고객이 요청한 개선 사항을 빠르게 구현할 수 있었습니다. 그러나 결과를 고객이 검증할 수 있도록 하려면 모든 사용자에게 업데이트를 배포하는 것(실험적인 변경이 위험하므로) 또는 고객에게만 특정한 빌드를 생성하는 것(두 사람 모두에게는 번거로운 일)이었습니다.
개발자들은 다양한 사용자 그룹에 대한 업데이트를 제공할 수 있는 유연성을 원했습니다. 예를 들어 비기술적인 이해관계자, QA, 또는 적절한 경우 전체 사용자 기반.
제품 빌드가 작업 중인 버전으로 switch하고 feedback을 수집하고 다시 제품 빌드로 돌아가야 하는 방법이 없었습니다.
그것은 채널 전환 을 허용합니다. 사용자의 기기에 설치된 앱은 런타임에 업데이트 채널을 switch할 수 있으므로, 제품 앱이 아닌 유연한 공간으로 변환됩니다. 이 기능은 비기술적인 이해관계자가 제품 앱을 사용하여 변경 사항을 테스트하고 직접 피드백을 제공할 수 있도록 해줍니다.
업데이트 채널 이해하기
업데이트 채널은 Capgo이 특정 빌드에 대한 업데이트를 대상으로 하는 방법입니다. 각 빌드는 채널과 관련이 있으며, 채널은 빌드가 받을 업데이트를 결정합니다.
예를 들어, 사용자에게 영향을 미치지 않는 채널에 업데이트를 배포할 수 있습니다. preview __CAPGO_KEEP_0__ production. 이전에는 채널 Switching이 Native Build을 설치하거나 Dashboard를 통해 Device Assignments을 수동으로 변경해야했습니다.
Capgo의 Capgo에서 Channel을 사용하면:
- 특정 사용자 그룹에 맞춤형 기능을 제공할 수 있습니다.
- A/B 테스트를 위해 사용자를 다른 채널에 Assign할 수 있습니다.
- 새로운 기능을 점진적으로 출시할 수 있습니다.
- 베타 테스트 프로그램을 만들 수 있습니다.
- 개별 사용자와의 Production Issue를 Debug할 수 있습니다.
업데이트 채널에 대해 익숙하지 않다면, __CAPGO_KEEP_0__의 채널 문서를 참조하세요. Capgo channels documentation 채널 스루핑은 앱이 재설치 없이 다른 업데이트 스트림으로 Pull할 수 있도록 해줍니다. 설치된 앱은 런타임에 Update Channel을 Switch할 수 있고, 새로 선택한 채널에서 업데이트 받을 수 있습니다. 앱이 삭제되거나 다른 채널로 Switch될 때까지.
이 기능은 앱이 여러 채널을 Switch할 수 있도록 해줍니다.
이 기능은 앱이 여러 채널을 Switch할 수 있도록 해줍니다.
실제로, 제품 관리자 또는 QA 팀은 __CAPGO_KEEP_0__ 채널로 빌드를 switch하고, 최신 변경 사항을 테스트할 수 있습니다. 테스트가 끝나면 다시 __CAPGO_KEEP_0__로 switch합니다. 재설치나 별도의 미리보기 빌드가 필요하지 않습니다. production __CAPGO_KEEP_0__ 채널로 빌드를 switch하는 것은 빌드의 특정 버전을 선택하는 것과 같습니다. preview __CAPGO_KEEP_0__로 다시 switch합니다. production 채널 스위칭은 앱이 업데이트 클라이언트에게 채널을 선택하도록 하여 작동합니다. 이 선택은 런타임에서 변경될 수 있으며, 채널이 삭제되거나 대체될 때까지 유지됩니다.
__CAPGO_KEEP_0__ 채널 스위칭 구현 방법
__CAPGO_KEEP_0__ Live Updates를 프로젝트에 구성할 수 있어야 채널 스위칭을 시도할 수 있습니다. __CAPGO_KEEP_0__ Live Updates를 설정하려면 __CAPGO_KEEP_0__ quickstart guide를 따르십시오.
Capgo 채널 스위칭을 위해 필요한 설정은 Capgo dashboard에서 "Allow devices to self associate"를 각 채널에 대해 활성화하는 것입니다. Capgo 설정이나 구성 변경이 필요하지 않습니다..
채널 스위칭의 핵심은 단일 Capgo 호출에 의해 구동됩니다: code를 사용하여 업데이트 쿼리할 때 사용하는 채널을 설정합니다.
API
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({ channel: 'your-channel' });
Capgo Capgo API에 대해 더 알아보세요..
즉시 채널-switching (v5.34.0+)
플러그인 버전 5.34.0, 6.34.0, 7.34.0, 또는 8.0.0 (버전에 따라 다름)부터 이후 setChannel() 채널-switching이 다르게 작동하고 훨씬 빠르게 작동합니다:
- 백엔드 유효성 검사 (읽기 전용): Capgo 백엔드에 요청을 보내 채널이 허용되는지 유효성 검사합니다.
- 로컬 스토리지 업데이트: 유효성 검사 통과 시, 채널을 장치의 로컬 스토리지에 저장합니다.
- 즉시 효과: 다음 업데이트 체크에서는 새로운 채널을 즉시 사용합니다.
그 전 setChannel() 데이터베이스 (Dashboard 또는 API 변경과 같은) 에 채널 오버라이드 저장. 장치들은 백엔드 복제 (최대 2분)가 완료될 때까지 새로운 채널을 인식하지 못했습니다. 새로운 동작은 백엔드 (유효성 검사)에서만 읽고, 지역 저장소에 저장하여 채널 Switching이 즉시 발생합니다.
채널 Switching Flow
보다 나은 사용자 경험을 위해, 채널 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 활성화
이것만 하면 채널 전환을 활성화할 수 있습니다. 앱이 채널을 사용하여 전환하기 전에 setChannel(), Capgo 대시보드에서 해당 채널에 대한 자체 할당을 활성화해야 합니다:
- 다음과 같이 __CAPGO_KEEP_0__ 대시보드의 채널 Capgo 대시보드의
- 관리하고 싶은 채널 이름을 클릭하세요
- 활성화 “Allow devices to self associate”
- ‘기기 자체 할당 허용’

채널 설정에서 자체 할당을 활성화하세요 defaultChannel 설정 필요. 사용자가 switch 할 수 있는 채널에 대해 self assignment만 활성화하면 됩니다.
이 설정이 비활성화 된 경우, 이 채널을 호출하는 시도는 실패하고, setChannel() 이벤트가 발생합니다. channelPrivate 가용 채널 목록
사용자가 self assignment 할 수 있는 채널 목록을 가져올 수 있습니다:
이 메서드는 self assignment이 활성화 된 채널만 반환합니다.
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);
채널 override를 제거하고 기본 채널로 돌아가려면:
이 메서드는 장치가 특정 채널에 할당되지 않도록 unlink하고 기본 채널로 돌아갑니다.
await CapacitorUpdater.unsetChannel({});
이 메서드는 장치가 특정 채널에 할당되지 않도록 unlink하고 기본 채널로 돌아갑니다. defaultChannel 설정에서 또는 클라우드 기본값에서.
채널 전환 테스트 방법
채널 전환을 실제로 확인하려면 릴리스 빌드를 필요로 합니다. __CAPGO_KEEP_0__은 릴리스 빌드에 설계되었습니다. 디버그 빌드의 경우 앱은 일반 업데이트 흐름을 우회하는 개발 서버에서 자바스크립트를 로드하는 대신, 개발 서버에서 자바스크립트를 로드합니다. @capgo/capacitor-updater API is designed for release builds. In debug builds, the app typically loads JavaScript from a development server instead, which bypasses the normal update flow.
채널 전환을 위해 필요한 유일한 요구 사항은 각 채널에서 "장치가 자체적으로 연관되도록 허용"을 활성화하는 것입니다.
테스트 빌드 생성 빌드를 생성하세요: 그런 다음 Xcode 또는 Android Studio를 사용하여 네이티브 빌드를 생성하거나 CI/CD PIPELINE을 사용하세요. 앱은 __CAPGO_KEEP_0__ 대시보드에서 클라우드 기본값으로 설정된 채널에서 시작됩니다.
다른 채널에 업데이트를 게시하는 방법
__CAPGO_KEEP_0__
bun run build && npx cap sync
Capgo
__CAPGO_KEEP_0__
설치 후에, 다른 채널에 업데이트를 공개하세요:
# 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은 또한 이전 안정 업데이트를 다시 적용하거나 빌드에 포함된 업데이트로 돌아가도록 클라이언트에게 지시하는 롤백 메커니즘을 제공합니다.
데이터 마이그레이션 고려 사항
채널 Switching은 앱이 실행하는 자바스크립트 번들을 변경합니다. 앱이 채널 간에 호환되지 않는 마이그레이션 또는 데이터 형태에 의존하는 경우, 전방향 및 후방향 Switching이 문제를 일으킬 수 있습니다.
예를 들어, 베타 업데이트가 데이터베이스 마이그레이션을 적용하는 경우, 프로덕션 버전은 새로운 스키마를 이해하지 못할 수 있습니다. 개발자는 업데이트가 채널 Switching 간에 안전하도록 보장하거나 필요할 때 한 방향으로만 Switching을 제한해야 합니다.
채널 Surfing이 모바일 반복을 개선하는 이유
채널 Surfing은 특히 프로덕션 환경에서 변경 사항을 빠르게 검토할 필요가 있는 경우 유용합니다.
빠른 검증
긴급한 버그修정을 검증하기 전에 널리 배포하기 전에 변경 사항을 고립시키는 경우가 있습니다. 채널 Surfing을 사용하면 변경 사항을 지정된 사용자만이 검토할 수 있도록 작은 세트로 고립시킬 수 있습니다.
주주 검토
제품 관리자 또는 QA 팀원은 설치된 프로덕션 빌드를 다른 업데이트 채널로 Switch 하여 문제 해결 또는 기능을 확인하고, 작업이 끝나면 다시 Switch 하여 작업을 완료할 수 있습니다.
Streamlined Testing
이것은 비기술적인 이해관계자에 대한 검토 및 의사결정을 포함하는 데 더 쉬운 방법을 제공하며, 워크플로우를 smooth하게 유지합니다. 단일 프로덕션 빌드는 테스트, 피드백 및 검증을 위한 유연한 도구가 됩니다.
사용 사례
- QA 테스트: QA 팀이 기능 branch 간에 Switch 할 수 있습니다.
- 베타 프로그램: 사용자가 베타 채널에 가입하여 출시 전EARLY ACCESS를 받을 수 있습니다.
- 주주자 검토: 제품 관리자가 출시 전 변경 사항을 미리 볼 수 있습니다.
- A/B 테스트: 사용자를 실험을 위한 다른 채널에 Assign 할 수 있습니다.
- Debugging:
특정 사용자를 디버그 채널로 전환하여 문제를 진단합니다
| 비교: 채널 변경 방법 | 방법 | 효과 시간 | persist |
|---|---|---|---|
setChannel() 사용 사례 |
페이지/영역: Capgo 솔루션 마케팅 페이지. 역할: 짧은 UI 레이블 또는 네비게이션 아이템. | 플러그인에서 | 즉시 |
| 기기만 (로컬) | 2분 이내 | 백엔드 데이터베이스 | 관리자 지정 장치에 대한 특정 변경 사항 |
| API 채널 할당 | 2분 이내 | 백엔드 데이터베이스 | 자동화된 백엔드 통합 |
채널-switching UI를 빌드할 때 최상의 사용자 경험을 제공하기 위해, 항상 플러그인의 setChannel() 최선의 방법
권한 제한
- : 채널 스루핑은 일반적으로 내부 사용자에게만 제공되므로 모든 사용자에게 노출하지 마세요.Best Practices
- 오류 처리: 채널 Switching 시 오류를 고양되게 처리하세요
- 호환성 검증: 설치된 네이티브 버전과 다른 채널의 업데이트가 호환되는지 확인하세요
- 채널 문서화: 각 채널의 목적을 명확하게 문서화하세요
- 사용량 모니터링: 디버깅을 위해 장치가 어느 채널에 있는지 추적하세요
자원
- : Capgo Live Updates Documentation
- : __CAPGO_KEEP_0__ Channels Documentation
- : 플러그인 API Reference
- Capgo CLI 명령어
결론
Capacitor 앱 개발을 위한 채널 스위칭
최근 플러그인 버전에서 도입된 즉시 채널 SWITCHING 기능은 사용자 경험을 더욱 매끄럽게 만들었습니다. 사용자는 채널을 SWITCHING하고 즉시 새로운 채널의 업데이트를 받을 수 있습니다.
버그 수정을 검증하는 데 사용자와 함께 작업하거나 베타 프로그램을 실행하거나 특정 사용자와 문제를 디버깅하는 등, 채널 스위칭은 사용자에게 필요한 업데이트를 정확한 시간에 정확한 사용자에게 배포할 수 있는 유연성을 제공합니다.
Capgo 채널 스위칭을 위한 Channel Surfing: 런타임에서 업데이트 채널을 SWITCHING하는 방법
Channel Surfing for __CAPGO_KEEP_0__: How to Switch Update Channels at Runtime Channel Surfing for Capgo: How to Switch Update Channels at Runtime __CAPGO_KEEP_0__ 채널 스위칭을 위한 Channel Surfing: 런타임에서 업데이트 채널을 SWITCHING하는 방법 Channel Surfing for __CAPGO_KEEP_0__: How to Switch Update Channels at Runtime Channel Surfing for __CAPGO_KEEP_0__: How to Switch Update Channels at Runtime Channel Surfing for __CAPGO_KEEP_0__: How to Switch Update Channels at Runtime 채널의 구현 세부 정보에 대해 채널 베타 테스트 솔루션 채널의 구현 세부 정보에 대해 버전 대상 솔루션 버전 대상 솔루션의 제품 워크플로에 대해 기사 기여