본문으로 바로가기
강좌

Capgo 채널 전환 방법: 런타임 채널 전환

Capgo의 런타임 채널 전환 기능을 사용하여 특정 사용자에게 즉시 변경 사항을 배포하세요. Capacitor 앱을 재설치하지 않고도 업데이트 채널을 전환할 수 있습니다.

마틴 도나디우

마틴 도나디우

컨텐츠 마케터

Capgo 채널 전환 방법: 런타임 채널 전환

업데이트 채널을 전환하여 특정 사용자에게 즉시 변경 사항을 배포하고 싶은 적이 있으셨나요? 테스트 플라이트나 구글 플레이에서 새로운 빌드를 다운로드하고 설치하지 않고도 즉시 검토 및 피드백을 받을 수 있도록 하려면.

저는 고객이 요청한 개선 사항을 빠르게 구현할 수 있었습니다. 그러나 결과를 고객의 손에 넣어 검증할 수 있도록 업데이트를 모든 사용자에게 배포하는 것은 실험적인 변경이 위험하다는 점을 고려할 때, 또는 고객에게 한 번에만 빌드를 생성하는 것은 모두에게 번거로운 일이라는 점을 고려할 때.

개발자들은 다양한 사용자 그룹에 대해 다른 업데이트를 제공하고 싶었습니다. 예를 들어 비기술적인 이해관계자, QA, 또는 적절한 경우 전체 사용자에게.

생산 빌드를 워크 인 프로세스 버전으로 전환하여 피드백을 수집하고 나중에 다시 생산 빌드로 돌아가고 싶었습니다.

그것이 채널 스위칭 을 가능하게합니다. 사용자의 기기에 설치된 앱은 런타임에 업데이트 채널을switch할 수 있으므로, 프로덕션 앱을 리뷰 및 반복적인 작업 공간으로 변환하는 대신 고정된 끝점이 됩니다. 이는 특히 비기술적인 이해관계자와 프로덕션 앱을 작업할 때 유용합니다. 그들은 이미 설치된 앱에서 직접 변경을 테스트하고 feedback을 제공할 수 있습니다.

업데이트 채널 이해하기

업데이트 채널은 Capgo가 특정 빌드에 대한 업데이트를 목표로하는 방법입니다. 각 빌드는 채널과 관련되어 있으며, 그 채널은 받을 업데이트를 결정합니다.

예를 들어, 사용자에게 영향을 미치지 않는 채널에 업데이트를 게시할 수 있습니다. 과거에는 채널을switch하기 위해 다른 네이티브 빌드를 설치하거나 대시보드에서 장치 할당을 수동으로 변경해야했습니다. preview __CAPGO_KEEP_0__의 채널은 다음과 같은 기능을 제공합니다: production특정 사용자 그룹에 대한 다양한 기능을 대상으로합니다.

Channels in Capgo allow you to:

  • 새로운 기능을 점진적으로 출시합니다.
  • That’s what
  • channel surfing
  • 베타 테스트 프로그램을 만들기
  • 개별 사용자와의 프로덕션 문제를 디버그합니다

업데이트 채널에 대해 익숙하지 않다면, Capgo 채널 문서 는 그들을 더 자세히 설명합니다.

채널 서핑이란 무엇인가?

채널 서핑은 설치된 앱이 재설치 없이 다른 업데이트 스트림으로 pull 할 수 있도록 해줍니다. 설치된 앱은 런타임에 업데이트 채널을 switch 할 수 있고, 새로 선택한 채널에서 업데이트를 계속 받을 것입니다. 앱이 삭제되거나 다른 채널로 switch 될 때까지.

실제로, 이건 제품 관리자나 QA가 빌드를, 예를 들어, production 채널로 switch 할 수 있게 해줍니다. 최신 변경 사항을 테스트할 수 있습니다. 테스트가 끝나면 다시 preview 으로 switch 할 수 있습니다. 재설치나 별도의 프리뷰 빌드가 필요하지 않습니다. production 채널 서핑의 실제 동작은 앱이 업데이트 클라이언트에 어떤 채널을 사용해야 하는지 알려주는 것입니다. 이 선택은 런타임에 변경될 수 있고, 삭제되거나 다른 채널로 switch 될 때까지 유지됩니다.

이 기능은 앱이 업데이트 클라이언트에 어떤 채널을 사용해야 하는지 알려주는 것입니다. 이 선택은 런타임에 변경될 수 있고, 삭제되거나 다른 채널로 switch 될 때까지 유지됩니다.

채널 전환 방법

채널 전환을 시도하기 전에, 프로젝트가 Capgo Live Updates로 구성되어 있어야 합니다. 이를 설정하려면 Capgo quickstart guide를 따르세요. 채널 전환을 위해 필요한 설정은 Capgo dashboard에서 '장치가 자체적으로 연결되도록 허용'을 각 채널에 대해 활성화하는 것입니다..

이상으로 Capgo 설정이나 구성 변경이 필요하지 않습니다. 채널 전환의 핵심은 단일 code 호출에 의해 구동됩니다:

이것은 API에서 업데이트를 조회할 때 사용되는 채널을 설정합니다.

import { CapacitorUpdater } from '@capgo/capacitor-updater';

await CapacitorUpdater.setChannel({ channel: 'your-channel' });

setChannel Capgo에 대해 더 알아보세요. Learn more about the setChannel API.

플러그인 버전 5.34.0, 6.34.0, 7.34.0, 또는 8.0.0 (프로젝트의 메이저 버전에 따라 다름)에 따라)

이것은 __CAPGO_KEEP_0__의 __CAPGO_KEEP_0__ 버전 5.34.0 이상에서 __CAPGO_KEEP_0__ 이것은 __CAPGO_KEEP_0__의 __CAPGO_KEEP_0__ 버전 5.34.0 이상에서 __CAPGO_KEEP_0__ setChannel() 이것은 __CAPGO_KEEP_0__의 __CAPGO_KEEP_0__ 버전 5.34.0 이상에서 __CAPGO_KEEP_0__

  1. 백엔드 유효성 검사 (읽기 전용): Capgo 백엔드에 요청을 보내 channel이 허용되는지 유효성 검사합니다.
  2. 로컬 스토리지 업데이트: 유효성 검사 통과 시 channel을 장치의 로컬 스토리지에 저장합니다.
  3. 즉시 효과: 다음 업데이트 체크에서는 새로운 channel을 즉시 사용합니다.

그전에는 setChannel() channel override를 백엔드 데이터베이스 (예: 대시보드나 API 변경)로 저장했습니다. 장치들은 백엔드 복제가 완료될 때까지 (최대 2분) 새로운 channel을 인식하지 못했습니다. 새로운 동작은 유효성 검사만 백엔드에서 읽고 로컬에서 저장하기 때문에 channel switch가 즉시 적용됩니다.

완전한 채널 Switching Flow

사용자 경험을 개선하기 위해, 일반적으로 channel만 switch하고 다음 앱 리스타트를 기다리기만 하면 안됩니다. 일반적인 접근 방식은 channel을 즉시 업데이트로 확인하고, 다운로드가 가능하면 다운로드하고, 앱을 리로드하여 사용자가 선택한 channel의 업데이트로 직접 이동하도록 하는 것입니다.

일반적인 흐름은 다음과 같습니다:

  1. channel을 변경합니다 (setChannel)
  2. 업데이트를 확인하세요 (getLatest)
  3. 업데이트를 가져와 적용하세요 (download, set 또는 next)
  4. 페이지/영역: Capacitor live-update 대안 비교 페이지. 역할: 장기 마케팅 또는 법적 문단. 보존: Capgo 제품/브랜드 및 개발자 용어 정확히. 메시지 키 `alternatives_cta_questions` (대안 CTA 질문). | 페이지/영역: Appflow 비교/이동 마케팅 복사본. 역할: 장기 마케팅 또는 법적 문단. 보존: Capgo 제품/브랜드 및 개발자 용어 정확히. 메시지 키 `appflow_cta_questions` (Appflow CTA 질문). | 페이지/영역: Capawesome 비교 페이지. 역할: 장기 마케팅 또는 법적 문단. 보존: Capgo 제품/브랜드 및 개발자 용어 정확히. 메시지 키 `capwesome_cta_questions` (Capwesome CTA 질문). | 페이지/영역: 컨설팅 서비스 페이지. 역할: 섹션 서브 타이틀 또는 태그 라인. 보존: Capgo 제품/브랜드 및 개발자 용어 정확히. 메시지 키 `consulting_faq_subtitle` (컨설팅 FAQ 서브 타이틀). | 페이지/영역: Appflow 비교/이동 마케팅 복사본. 역할: 짧은 UI 레이블 또는 네비게이션 아이템. 보존: Capgo 제품/브랜드 및 개발자 용어 정확히. 메시지 키 `appflow_plugins_or` (Appflow 플러그인 또는).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');

예시:

이 흐름을 구조화하는 방법은 여러분에게 달려 있습니다. 여러분이 이러한 단계를 여러 상호 작용에 걸쳐 나누거나 한 번에 실행할 수 있습니다. 어떠한 방법으로 흐름을 구조화하더라도, 실패를 고려하십시오. 네트워크 문제 또는 유효하지 않은 채널은 업데이트를 적용하는 것을 방해할 수 있습니다.

단 하나의 요구 사항: 자체 할당을 활성화하세요 이것이 채널 스위칭을 활성화하기 위해 필요한 유일한 일입니다. setChannel(), you must enable self-assignment for that channel in the Capgo dashboard:

  1. Capgo __CAPGO_KEEP_0__ 대시보드에서 페이지/영역: Capgo 솔루션 마케팅 페이지. 역할: 짧은 UI 레이블 또는 네비게이션 아이템. 보존: Capgo 제품/브랜드 및 개발자 용어 정확히. 메시지 키 `solutions_white_label_visual_cell2_value` (솔루션 화이트 레이블 시각적 셀2 값). Capgo의 섹션
  2. __CAPGO_KEEP_0__의 섹션에서 해당 채널 이름을 클릭하세요
  3. 활성화 “Allow devices to self associate”
  4. 변경을 저장하세요

채널 설정에서 스스로 할당을 활성화하세요

그것만으로 충분합니다. 앱에서 설정 변경이 필요하지 않습니다. 사용자가 switch할 수 있는 채널에 대해 스스로 할당을 활성화만 하면 됩니다. defaultChannel 이 설정이 비활성화되어 있다면, 이 채널을 호출하는 시도는 실패하고

이벤트가 발생합니다. setChannel() 사용 가능한 채널 목록 channelPrivate 이 설정이 비활성화되어 있다면, 이 채널을 호출하는 시도는 실패하고

이벤트가 발생합니다.

__CAPGO_KEEP_0__

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({});

기본 채널로 되돌아가기 위해 채널 override를 제거하고: defaultChannel 이것은 장치가 특정 채널에 할당된 채널에서 unlink되며, config 또는 cloud 기본값으로 돌아갑니다.

채널 스루핑 테스트하기

채널 스루핑을 실제로 테스트하려면 릴리스 빌드가 필요합니다 - __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.

__CAPGO_KEEP_0__

채널 전환을 위해 필요한 유일한 요구 사항은 각 채널에서 "장치가 자체적으로 연결되도록 허용"을 활성화하는 것입니다. “장치가 자체적으로 연결되도록 허용”을 활성화해야 합니다. 각 채널에서 "장치가 자체적으로 연결되도록 허용"을 활성화하는 것으로 충분합니다. 앱에서 설정 변경이 필요하지 않습니다.

테스트 빌드 생성

앱을 빌드하세요:

bun run build && npx cap sync

그런 다음 Xcode 또는 Android Studio를 사용하여 네이티브 빌드를 생성하거나 CI/CD PIPELINE을 사용하세요. 앱은 Capgo 대시보드에서 설정된 클라우드 기본 채널에 따라 시작됩니다.

다른 채널에 업데이트를 게시하는 방법

앱이 설치된 후 다른 채널에 업데이트를 게시하세요:

# 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 업데이트 Gotchas

이러한 문제는 채널 전환과 관련이 없지만, 채널 전환을 런타임에 수행하면 빠르게 나타나는 문제입니다.

런타임 버전 불일치

Capgo에서 업데이트는 네이티브 앱 버전과 결합됩니다. 네이티브 버전이 설치된 앱의 네이티브 버전과 일치하지 않으면 업데이트가 다운로드되거나 적용되지 않습니다. 채널 전환 시 일반적으로 앱이 채널을 전환하지만 업데이트가 적용되지 않는 경우가 있습니다. 채널에 업데이트가 존재함에도 불구하고.

이 경우 업데이트가 다른 네이티브 버전의 앱에서 게시된 경우입니다. 채널의 번들 파일이 기기에 설치된 네이티브 버전과 호환되는지 확인하십시오.

업데이트 제거 또는 취소

앱이 이미 채널에 대한 업데이트를 다운로드한 경우 Capgo 대시보드에서 업데이트를 삭제하면 기기에 이미 다운로드된 업데이트를 삭제하지 않습니다. 삭제는 미래의 다운로드만 중단합니다. 업데이트가 이미 다운로드된 경우 업데이트를 삭제하는 것은 기기에 업데이트를 삭제하지 않습니다. 업데이트가 잘못된 경우 가장 신뢰할 수 있는 방법은 동일한 채널에 알려진 좋은 업데이트를 게시하는 것입니다. 이로 인해 채널의 역사에서 새로운 업데이트가 생성되고, 클라이언트는 이 업데이트를 최신 버전으로 처리하고 적용합니다.

__CAPGO_KEEP_0__도 이전에 안정적인 업데이트를 재적용하거나 기존 빌드에 포함된 업데이트로 돌아가도록 클라이언트에게 지시하는 롤백 메커니즘을 제공합니다.

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__

채널 Switching은 앱이 실행하는 JavaScript Bundle을 변경합니다. 앱이 채널 간에 호환되지 않는 마이그레이션 또는 데이터 형태에 의존하는 경우, 채널 Switching을 반복하면 문제가 발생할 수 있습니다.

예를 들어, 베타 업데이트가 데이터베이스 마이그레이션을 적용하는 경우, 프로덕션 버전은 새로운 스키마를 이해하지 못할 수 있습니다. 개발자는 업데이트가 채널 Switching에 안전하도록 보장하거나, 필요할 때는 Switching을 한 방향으로 제한해야 합니다.

채널 Surfing이 모바일 반복을 개선하는 이유

채널 Surfing은 특히 프로덕션 환경에서 변경 사항을 빠르게 검토할 때 유용합니다.

빠른 검증

긴급한 버그修정에 대한 검증이 필요할 때, 채널 Surfing을 사용하면 변경 사항을 지정된 사용자에게만 분리하여 검토할 수 있습니다.

주주 검토

제품 관리자 또는 QA가 설치된 프로덕션 빌드를 다른 업데이트 채널로 Switching하여, 수정 또는 기능을 검증한 후, 다시 Switching하여 프로덕션으로 돌아갈 수 있습니다.

streamlined Testing

이것은 비기술적인 주주가 검토 및 결정을 내릴 수 있도록 하면서, 워크플로우를 smooth하게 유지할 수 있도록 합니다. 단일 프로덕션 빌드는 테스트, feedback 및 검증을 위한 유연한 도구가 됩니다.

사용 사례

  • QA Testing: QA 팀이 기능 branch 간에 switch 할 수 있습니다
  • Beta 프로그램: 사용자가 출시 전 에어리시 액세스에 대한 베타 채널에 가입합니다
  • 주주자 검토: 제품 소유주가 출시 전 변경 사항을 미리 볼 수 있습니다
  • A/B 테스트: 사용자를 실험을 위해 다른 채널에 assign합니다
  • 디버깅: 특정 사용자를 디버그 채널로 switch하여 문제를 진단합니다

비교: 채널 변경 방법

방법 효과 시간 저장된 Where 사용 사례
setChannel() 플러그인에서 즉시 디바이스만 (로컬) 사용자 앱 내에서 채널-switching
디바이스 오버라이드 2분 이내 백엔드 데이터베이스 관리자 지정 장치 변경
API 채널 assignments 2분 이내 백엔드 데이터베이스 자동화된 백엔드 통합

사용자 경험을 최적으로 제공할 수 있는 채널-switching UI를 만들 때는 항상 플러그인의 setChannel() 방법을 사용하세요.

최선의 방법

  1. 접근 제한: 채널 스위칭은 일반적으로 내부 사용자에게만 제공되므로 모든 사용자에게 노출하지 마세요.
  2. 오류 처리: 채널을 전환할 때 항상 오류를 부드럽게 처리하세요.
  3. 호환성 검증: 설치된 네이티브 버전과 호환되는 업데이트가 다른 채널에서 제공되는지 확인하세요.
  4. 채널 문서화 : __CAPGO_KEEP_0__에 대한 명확한 문서를 유지하세요.
  5. 사용량 모니터링: 디버깅을 위해 각 채널에 어떤 기기를 연결했는지 추적하세요.

자원

결론

채널 전환은 Capacitor 앱을 개발하는 방식을 완전히 바꿉니다. 프로덕션 빌드가 고정된 엔드포인트가 아닌 테스트, 유효성 검사, 및 빠른 반복을 위한 유연한 도구로 변합니다.

최근 플러그인 버전에서 소개된 즉시 채널 전환 기능으로 인해 사용자들은 이제 채널을 전환하고 새로운 채널에서 즉시 업데이트를 받을 수 있습니다. 기다리는 시간이 없습니다.

사용자와의 버그 수정을 검증하거나 베타 프로그램을 실행하거나 특정 사용자와의 문제를 디버깅하는 경우 채널 전환은 사용자에게 필요한 업데이트를 필요한 사용자에게 필요한 때에 제공할 수 있는 유연성을 제공합니다.

Channel Surfing for Capgo: Channel Switching Update Method at Runtime

만약 __CAPGO_KEEP_0__: Channel Switching Update Method at Runtime을 사용 중이라면 Capgo: Channel Switching Update Method at Runtime을 사용 중이라면 __CAPGO_KEEP_0__: Channel Switching Update Method at Runtime을 사용 중이라면 __CAPGO_KEEP_0__: Channel Switching Update Method at Runtime을 사용 중이라면 __CAPGO_KEEP_0__: Channel Switching Update Method at Runtime을 사용 중이라면 채널 라우팅과 스테이지 롤아웃을 계획하고 연결하는 채널 채널 채널 채널 Beta 테스트 솔루션 버전 목표 솔루션 버전 목표 솔루션을 위한 제품 워크플로우

Capacitor 앱에 대한 실시간 업데이트

웹-layer 버그가 활성화된 경우 Capgo을 통해修정을 배포하여 앱 스토어 승인 대기일을 기다리지 않습니다. 사용자는 배경에서 업데이트를 받으며 네이티브 변경 사항은 일반적인 검토 경로에 남아 있습니다.

마틴의 인간 지원

시작하기

최신 블로그

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