메인 콘텐츠로 바로가기
튜토리얼

Capgo 채널 전환 방법: 런타임에서 업데이트 채널을 전환하는 방법

Capgo를 사용하여 특정 사용자에게 즉시 변경을 배포하세요. 업데이트 채널을 전환하여 Capacitor 앱을 재설치하지 않고도.

Martin Donadieu

Martin Donadieu

콘텐츠 마케터

Capgo 채널을 실시간으로 Switch하는 방법

사용자가 즉시 검토 및 피드백을 받을 수 있도록, 테스트 플라이트나 구글 플레이에서 새로운 빌드를 다운로드하고 설치하지 않고 직접 변경을 배포하고 싶은 경우가 있으세요?

__CAPGO_KEEP_0__ 채널을 Switch하는 기능이 없어서 개발자들은 고객의 요구를 빠르게 구현할 수 있었습니다. 그러나 결과를 고객의 손에 넣어 검증하기 위해 업데이트를 모든 사용자에게 배포하거나 (실험적인 변경이 위험하므로) 고객에게만 배포하는 일회용 빌드를 만들었는데, 모두에게는 번거로웠습니다.

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

제품 빌드를 실시간으로 업데이트 채널을 Switch하고 피드백을 수집하고 다시 제품 빌드로 돌아가야했습니다.

그것이 __CAPGO_KEEP_0__ 채널을 Switch하는 기능 이것을

__CAPGO_KEEP_0__ 채널을 Switch하는 기능

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

예를 들어, __CAPGO_KEEP_0__ 채널에 업데이트를 게시할 수 있습니다. 이는 __CAPGO_KEEP_0__ 사용자에게 영향을 미치지 않습니다. preview 지난에는 채널 Switching이 다른 네이티브 빌드 설치 또는 수동으로 변경 장치 assignments을 통해 대시보드에서 필요했습니다. production__CAPGO_KEEP_0__ 채널은 다음과 같은 기능을 제공합니다:

Channels in Capgo allow you to:

  • A/B 테스트를 위해 사용자를 다른 채널에 Assign합니다.
  • 새로운 기능을 점진적으로 출시합니다.
  • 베타 테스트 프로그램을 생성합니다.
  • 개별 사용자에 대한 프로덕션 문제를 디버깅합니다.
  • 업데이트 채널에 대해 익숙하지 않은 경우 __CAPGO_KEEP_0__ 채널 문서를 참조하십시오.

__CAPGO_KEEP_0__ Capgo 그것들을 더 자세히 다룹니다.

채널 서핑이란 무엇인가요?

채널 서핑은 설치된 앱이 다시 설치하지 않고 다른 업데이트 스트림으로부터 데이터를 가져올 수 있도록 해줍니다. 설치된 앱은 런타임 중에 업데이트 채널을switch할 수 있으며, 새로 선택한 채널에서 업데이트를 계속 받을 때까지 앱이 삭제되거나 다른 채널로 switch될 때까지.

실제로, 제품 소유자 또는 QA는 예를 들어 "__CAPGO_KEEP_0__" 채널로 switch하여 최신 변경 사항을 테스트할 수 있습니다. 테스트가 끝나면 다시 "__CAPGO_KEEP_0__"로 switch하면 됩니다. 다시 설치하거나 별도의 예시 빌드가 필요하지 않습니다. production 채널 서핑은 앱이 업데이트 클라이언트에 사용할 채널을 알려주는 방식으로 작동합니다. 이 선택은 런타임 중에 변경될 수 있으며, 삭제되거나 대체될 때까지 유지됩니다. preview 채널 서핑을 구현하는 방법 production 채널 서핑을 시도하기 전에 프로젝트가 __CAPGO_KEEP_0__ Live Updates와 설정되어 있어야 합니다. 설정 방법은 __CAPGO_KEEP_0__ quickstart guide를 따라하세요.

채널 서핑을 위한 유일한 설정은 각 채널에서 "__CAPGO_KEEP_0__"에 "장치가 자체적으로 연관되도록 허용"을 활성화하는 것입니다.

__CAPGO_KEEP_0__ dashboard

Capgo Capgo.

Capgo No code 변경 또는 구성 수정이 필요합니다.

API 호출의 단일 원동력으로 인해 채널 스루핑이 구동됩니다.

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

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

이것은 Capgo 업데이트 쿼리 시 사용되는 채널을 설정합니다. API setChannel에 대해 더 알아보세요..

채널switching (v5.34.0+)

플러그인 버전 5.34.0, 6.34.0, 7.34.0, 또는 8.0.0 (대부분 버전)에 따라 채널switching이 다르게 작동하고 더 빠르게 작동합니다. setChannel() 백엔드 유효성 검사 (읽기 전용)

  1. : __CAPGO_KEEP_0__ 백엔드에 요청을 보내 채널이 허용되는지 유효성 검사합니다.: A request is sent to the Capgo backend to validate the channel is allowed
  2. : 유효성 검사 통과 시, 채널은 장치의 로컬 스토리지에 저장됩니다.__CAPGO_KEEP_0__
  3. 즉시 효과: 새로운 채널을 사용하기 위해 다음 업데이트 확인이 즉시 사용됩니다

그전에는 setChannel() API의 변경 사항 (예: 대시보드 또는 백엔드 데이터베이스)과 같이 채널 오버라이드가 백엔드 데이터베이스에 저장되었습니다. 장치들은 새로운 채널이 인식되기까지 백엔드 복제를 기다려야했습니다 (최대 2분). 새로운 동작은 백엔드에서만 읽고 (유효성 검사용) 지역 저장소에만 저장합니다, 따라서 채널 Switching이 즉시 발생합니다.

채널 Switching Flow

사용자 경험을 개선하기 위해, 채널 Switching만하고 앱 재시작을 기다리기만 하면 안됩니다. 일반적인 접근 방식은 즉시 업데이트 확인, 다운로드, 앱 재로드를 수행하여 사용자가 선택한 채널의 업데이트에 직접 접근할 수 있도록 하는 것입니다.

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

  1. 채널 변경 (setChannel)
  2. 업데이트 확인 (getLatest)
  3. 업데이트 다운로드 및 적용 (download, set 또는 next)
  4. 앱 재로드가 필요하면 (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. 에서 자체 할당을 활성화해야 합니다. 자체 할당을 활성화하기 위해 section in your Capgo dashboard
  2. Channels
  3. 섹션 관리하고 싶은 채널 이름을 클릭하세요.
  4. 변경을 저장하세요

채널 설정에서 자체 할당을 활성화하세요

그의 끝입니다. 앱에서 설정 변경이 필요하지 않습니다. 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({});

이것은 기기에 특정 채널 assign 해제하고, 기본 채널로 돌아가게 합니다. 이 채널은 config에서 또는 cloud 기본값에서 찾을 수 있습니다. 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.

Prerequisites

각 채널에서 스루핑을 허용하도록 하려면 "기기 자체 연관 허용"을 활성화해야 합니다. 채널 스루핑 테스트 빌드 생성 채널 스루핑 테스트 빌드는 릴리즈 빌드에서만 작동합니다.

채널 스루핑 테스트 빌드는 릴리즈 빌드에서만 작동합니다.

Build your app as usual:

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를 구축하는 방법

채널 전환은 일반적으로 사용자에게 노출되지 않습니다. 예를 들어, 인증된 직원만이 앱을 프리뷰 채널로 전환할 수 있는 버튼이 있는 경우가 있습니다.

다음은 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>
  );
}

채널 전환 Gotchas

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

런타임 버전 불일치

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

이 경우 업데이트가 다른 네이티브 앱 버전에서 게시된 것으로 나타납니다. 채널의 패키지를 네이티브 버전이 설치된 장치와 호환되도록 확인하세요.

업데이트 제거 또는 취소

앱이 이미 채널에 대한 업데이트를 다운로드한 경우 Capgo 대시보드에서 업데이트를 삭제하면 이미 업데이트를 다운로드한 장치에서 업데이트를 제거하지 않습니다. 삭제는 미래 다운로드만 중단합니다.

업데이트가 잘못된 경우 가장 신뢰할 수 있는 방법은 동일한 채널에 알려진 좋은 업데이트를 게시하는 것입니다. 이로 인해 채널의 역사 상단에 새로운 업데이트가 생성되고, 클라이언트는 이 업데이트를 최신 버전으로 처리하여 대신 적용합니다.

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

데이터 마이그레이션 고려 사항

채널 Switching은 앱이 실행하는 자바스크립트 패키지를 변경합니다. 앱이 채널 간에 호환되지 않는 마이그레이션 또는 데이터 형태에 의존하는 경우, Switching back and forth는 문제를 일으킬 수 있습니다.

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

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

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

빠른 검증

긴급한 버그 수정이 널리 배포되기 전에 검증이 필요할 때 상상해 보세요. 채널 스루핑을 사용하면 변경 사항을 지정된 사용자만이 검토할 수 있는 작은 그룹으로 분리할 수 있습니다. 그 후에 프로덕션에 도달하기 전에.

주주 검토

제품 소유자 또는 QA 팀원이 설치된 프로덕션 빌드를 다른 업데이트 채널로 Switch 할 수 있습니다. 수정 또는 기능을 검증하고, 검토를 마치면 다시 Switch 할 수 있습니다.

streamlined 테스트

이것은 비기술적인 주주를 검토 및 결정을위한 참여를 쉽게하고, 워크플로우를 smooth하게 만듭니다. 단일 프로덕션 빌드는 테스트, 피드백 및 검증을위한 유연한 도구가됩니다.

사용 사례

  • QA 테스트: QA 팀이 기능 branch 사이를 Switch 할 수 있습니다.
  • 베타 프로그램: 사용자가 베타 채널에 가입하여 이른 접근을 받습니다.
  • 주주 검토: 제품 소유주가 출시 전 변경 사항을 미리 볼 수 있습니다.
  • A/B Testing: 사용자를 실험을 위한 다른 채널에 할당합니다.
  • Debugging: 특정 사용자를 디버그 채널로 전환하여 문제를 진단합니다.

Comparison: Channel Change Methods

Method Effect Time Persisted Where Use Case
setChannel() from plugin Instant __CAPGO_KEEP_0__ 기기 전용 (로컬) 사용자 동의에 따라 앱 내 채널-switching
기기 오버라이드 대시보드 2분 이내 백엔드 데이터베이스 특정 기기에 대한 관리자 동의 변경
API 채널 assignments 2분 이내 백엔드 데이터베이스 자동화된 백엔드 통합

채널-switching UI를 빌드할 때 최상의 사용자 경험을 위해 항상 플러그인의 setChannel() 메소드를 사용하세요.

Best Practices

  1. 권한 제한: 채널 전환은 일반적으로 내부 용도로 사용되므로 모든 사용자에게 노출하지 마세요
  2. 오류 처리: 채널 전환 시 항상 오류를 부드럽게 처리하세요
  3. 호환성 확인: 설치된 네이티브 버전과 호환되는 업데이트가 다른 채널에서 작동하는지 확인하세요
  4. 채널 문서화: 각 채널의 목적을 명확하게 문서화하세요
  5. 사용량 모니터링: 디버깅을 위해 장치가 어느 채널에 있는지 추적하세요

자원

결론

채널 스루핑은 Capacitor 앱의 개발 방식을 완전히 바꿔줍니다. 프로덕션 빌드가 고정된 엔드포인트가 아닌, 테스트, 검증, 그리고 빠른 반복 개발을 위한 유연한 도구로 변합니다.

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

버그 픽스와 스테이크 홀더 간의 유효성 검사, 베타 프로그램, 또는 특정 사용자와의 디버깅과 같은 다양한 상황에서, 채널 스루핑은 사용자에게 필요한 업데이트를 정확한 시간에 정확한 사용자에게 배포할 수 있는 유연성을 제공합니다.

채널 스루핑을 위한 Capgo: 런타임에서 업데이트 채널을 Switch하는 방법

__CAPGO_KEEP_0__을 사용하는 경우 채널 스루핑을 위한 Capgo: 런타임에서 업데이트 채널을 Switch하는 방법 을 사용하여 채널 라우팅과 스테이지드 롤아웃을 계획하고 연결하세요. 채널 채널에 대한 구현 세부 정보를 위해 채널 채널에 대한 구현 세부 정보를 위해 채널 채널에 대한 구현 세부 정보를 위해 베타 테스트 솔루션 제품 워크플로우에 대한 베타 테스트 솔루션, 및 버전 대상 솔루션 제품 워크플로우에 대한 버전 대상 솔루션.

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

웹层 버그가 활성화된 경우, Capgo을 통해修정을 배포하는 대신 앱 스토어 승인까지 며칠 기다리지 말고, 사용자는 배경에서 업데이트를 받으면서 네이티브 변경 사항은 일반적인 검토 경로에 남겨둔다.

시작하기

블로그에서 최신 뉴스

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