본문으로 바로가기
튜토리얼

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

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

마틴 도나디유

마틴 도나디유

콘텐츠 마케터

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

어떤 사용자가 즉시 검토 및 피드백을 위해 특정 사용자에게 변경 사항을 직접 배포할 수 있는 방법이 있었으면 좋겠다고 생각해 본 적이 있나요? TestFlight 또는 Google Play에서 새로운 빌드를 다운로드하고 설치하지 않고.

나는 고객이 요청한 개선 사항을 빠르게 구현할 수 있었지만, 결과를 고객이 검증할 수 있도록 배포하는 것은 실험적인 변경을 위해 모든 사용자에게 업데이트를 배포하는 것(위험스럽습니다) 또는 고객에게만 특정한 빌드를 생성하는 것(우두둑합니다)으로 이어졌습니다.

개발자들은 다양한 사용자 그룹에 대한 업데이트를 제공할 수 있는 유연성을 원했습니다. 예를 들어, 비기술적인 이해관계자, QA, 또는 적절한 경우 전체 사용자 기반.

생산 빌드는 작업 중인 버전으로 switch할 수 없었습니다. 피드백을 수집하고 다시 생산으로 돌아가야 했습니다.

그것이 채널 전환 을 통해 가능합니다. 사용자의 기기에 설치된 앱은 런타임에 업데이트 채널을 switch할 수 있으므로, 생산 앱을 검토 및 반복의 유연한 공간으로 바꿀 수 있습니다. 비기술적인 이해관계자가 생산 앱을 사용하여 변경 사항을 테스트하고 직접 피드백을 제공할 수 있도록 해줍니다.

업데이트 채널 이해하기

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

예를 들어, 사용자에게 영향을 미치지 않는 채널에 업데이트를 배포할 수 있습니다. preview 업데이트 채널은 개발자에게 다양한 사용자 그룹에 대한 업데이트를 제공할 수 있는 유연성을 제공합니다. 예를 들어, 비기술적인 이해관계자, QA, 또는 적절한 경우 전체 사용자 기반. production. 이전에는 채널을 전환하려면 다른 네이티브 빌드를 설치하거나 대시보드에서 장치 할당을 수동으로 변경해야했습니다.

Capgo 에서 채널을 통해:

  • 특정 사용자 그룹에 맞춤형 기능을 제공
  • A/B 테스트를 위해 사용자를 다른 채널에 할당
  • 새로운 기능을 점진적으로 출시
  • 베타 테스트 프로그램을 만들기
  • 개별 사용자와 함께 프로덕션 문제를 디버그

업데이트 채널에 대해 익숙하지 않다면 Capgo 채널 문서 업데이트 채널에 대한 자세한 내용을 다룹니다.

채널 서핑이란 무엇인가?

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

In practice, this means a product owner or QA can switch a production 채널 preview build to, for example, a production 채널

try out the latest changes. When they are done testing, they switch back to

채널

Before you can try channel surfing, your project needs to be configured with Capgo Live Updates. To set that up, follow the Capgo quickstart guide.

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. No code changes or config modifications needed beyond that.

At its core, channel surfing is driven by a single API call:

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

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

Before you can try channel surfing, your project needs to be configured with Capgo Live Updates. To set that up, follow the Capgo quickstart guide. 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. No Capgo changes or config modifications needed beyond that. At its core, channel surfing is driven by a single Capgo call: This sets the channel that is used when querying Capgo for updates. Learn more about the setChannel API.

즉시 채널 전환 (v5.34.0+)

플러그인 버전 5.34.0, 6.34.0, 7.34.0, 또는 8.0.0 (대형 버전에 따라)부터 (depending on your major version), setChannel() 다음과 같이 작동합니다:

  1. 백엔드 유효성 검사 (읽기 전용): Capgo 백엔드에 요청을 보내 채널이 허용되는지 유효성 검사를 합니다.
  2. 로컬 스토리지 업데이트: 유효성 검사가 통과하면 장치의 로컬 스토리지에 채널을 저장합니다.
  3. 즉시 효과: 새로운 채널을 즉시 사용하기 위해 다음 업데이트를 확인합니다.

그전에는 setChannel() API 채널 오버라이드 저장

채널 전환 완료 흐름

사용자 경험을 개선하기 위해, 채널만 전환하고 다음 앱 재시작을 기다리기만 하는 것보다 더 많은 작업을 수행하는 것이 일반적입니다. 일반적인 접근 방식은 사용자가 선택한 채널의 업데이트에 직접 도착하기 위해 즉시 업데이트 확인, 다운로드, 앱 재로드를 수행하는 것입니다.

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

  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()채널에서 스스로 할당을 허용해야 합니다. Capgo 대시보드에서

  1. 다음과 같이 대시보드에 접속하세요. __CAPGO_KEEP_0__ 대시보드의 section in your Capgo dashboard
  2. 섹션으로 이동하세요.
  3. 관리하고 싶은 채널 이름을 클릭하세요. ‘기기 스스로 할당 허용’을 활성화하세요.
  4. 변경 사항을 저장하세요.

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

그것만으로 충분합니다. 앱에서 설정 변경이 필요하지 않습니다. defaultChannel __CAPGO_KEEP_0__ 설정이 필요합니다. 채널을 사용자가 switch할 수 있도록 하려면 채널의 self assignment을 활성화하세요.

이 설정이 비활성화되면 이 채널을 통해 호출하는 시도는 실패하고 __CAPGO_KEEP_1__ 이벤트가 발생합니다. setChannel() __CAPGO_KEEP_2__ channelPrivate __CAPGO_KEEP_3__

__CAPGO_KEEP_4__

__CAPGO_KEEP_5__

const { channels } = await CapacitorUpdater.listChannels();

console.log('Available channels:', channels.map(c => c.name));
// Use this to build a channel selector UI

__CAPGO_KEEP_6__

__CAPGO_KEEP_7__

__CAPGO_KEEP_8__

const { channel } = await CapacitorUpdater.getChannel();

console.log('Current channel:', channel);

__CAPGO_KEEP_9__

__CAPGO_KEEP_10__

await CapacitorUpdater.unsetChannel({});

__CAPGO_KEEP_11__ defaultChannel 설정에서 또는 클라우드 기본값에서.

채널 스루핑 테스트 방법

채널 스루핑을 실제로 확인하려면 릴리즈 빌드를 필요로 합니다 - @capgo/capacitor-updater API은 릴리즈 빌드에 설계되었습니다. 디버그 빌드의 경우 앱은 일반적으로 개발 서버에서 자바스크립트를 로드하기 때문에 일반 업데이트 흐름을 우회합니다.

필요 조건

채널 스루핑의 유일한 요구 조건은 각 채널에서 "기기 자체 연관 허용"을 활성화하는 것입니다. “Allow devices to self associate” 채널 스루핑을 허용하고자 하는 각 채널에서 "기기 자체 연관 허용"을 활성화하세요. 앱의 설정 변경은 필요하지 않습니다.

테스트 빌드 생성

빌드를 일반적으로 생성하세요:

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에서 native 앱 버전과 결합됩니다. 업데이트된 native 버전이 설치된 앱의 native 버전과 일치하지 않으면 업데이트가 다운로드되거나 적용되지 않습니다. 채널 전환 시, 업데이트가 존재하지만 앱이 채널을 전환하지만 업데이트가 적용되지 않는 경우가 있습니다.

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

업데이트 삭제 또는 취소

앱이 이미 채널에 대한 업데이트를 다운로드한 경우, Capgo 대시보드에서 업데이트를 삭제하면 기기에 이미 업데이트가 있는 기기에서 업데이트를 삭제하지 않습니다. 삭제는 업데이트를 삭제하는 것만 멈추게 됩니다. 미래 다운로드.

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

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

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

채널 Switching은 앱이 실행하는 자바스크립트 번들을 변경합니다. 만약 앱이 채널 간에 호환되지 않는 마이그레이션 또는 데이터 형태에 의존한다면, 채널을 전환하면 문제가 발생할 수 있습니다.

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

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

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

빠른 검증

급히 수정해야 하는 버그가 널리 배포되기 전에 검증이 필요할 때 생각해 보세요. 채널 서핑을 사용하면 변경 사항이 지정된 사용자에게만 분리되어 검토될 수 있습니다.

주주 검토

__CAPGO_KEEP_0__ 또는 QA 담당자는 설치된 프로덕션 빌드를 다른 업데이트 채널로 Switch 할 수 있으며, 수정 사항이나 새로운 기능을 확인하고, 작업이 끝나면 다시 원래 채널로 Switch 할 수 있습니다.

Streamlined Testing

이러한 기능은 비기술적인 이해관계자들이 검토 및 의사결정을 포함시킬 수 있도록 하며, 워크플로우가 smooth하게 유지되도록 합니다. 단일 프로덕션 빌드는 테스트, 피드백 및 검증을 위한 유연한 도구로 사용될 수 있습니다.

Use Cases

  • QA Testing: QA 팀이 기능 branch 간에 Switch 할 수 있습니다.
  • Beta Programs: 사용자는 베타 채널에 가입하여 최신 기능을 미리 체험할 수 있습니다.
  • Stakeholder Review: 제품 소유주가 출시 전 변경 사항을 미리 미리 볼 수 있습니다.
  • A/B Testing: 사용자를 다른 채널에 Assign 하여 실험을 진행할 수 있습니다.
  • 디버깅__CAPGO_KEEP_0__을 사용하여 특정 사용자를 디버그 채널로 전환하여 문제를 진단합니다.

채널 변경 방법 비교

방법효과 시간저장 위치사용 사례
setChannel() 플러그인에서즉시기기만(로컬)앱 내에서 사용자가 채널을 전환하는 경우
기기 오버라이드2분 이내데이터베이스특정 장치에 대한 관리자가 시작한 변경 사항
API 채널 assignments2분 이내데이터베이스자동화된 백엔드 통합

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

최선의 방법

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

자원

결론

채널 전환은 Capacitor 앱의 개발을 어떻게 바꾸는지에 대한 새로운 관점입니다. 프로덕션 빌드가 고정된 엔드포인트로만 보이지는 않습니다. 대신, 채널 전환을 통해 테스트, 검증, 빠른 반복 개발을 위한 유연한 도구로 사용할 수 있습니다.

최근 플러그인 버전에서 도입된 즉각적인 채널 전환 기능 덕분에 사용자 경험은 더욱 매끄럽게 진행됩니다. 사용자는 채널을 전환하고 즉시 새로운 채널에서 업데이트를 받을 수 있습니다. 기다리는 시간이 없습니다.

버그 수정을 검증하는 데에 이해관계자와 함께 일하거나 베타 프로그램을 진행하거나 특정 사용자와 함께 문제를 디버깅하는 등, 채널 전환은 사용자에게 필요한 업데이트를 정확한 시기에 제공할 수 있는 유연성을 제공합니다.

채널 전환을 사용하여 Capgo을 계속 진행하는 방법: 런타임에서 업데이트 채널을-switch하는 방법

__CAPGO_KEEP_0__을 사용하는 경우 채널 전환을 사용하여 Capgo: 런타임에서 업데이트 채널을-switch하는 방법 을 사용하여 채널 라우팅과 단계별 롤아웃을 계획하고, 이를 Channels 와 연결하세요. 채널 라우팅과 단계별 롤아웃에 대한 implementation detail은 Channels __CAPGO_KEEP_0__ 채널에 대한 구현 세부 정보에 대해 __CAPGO_KEEP_1__ __CAPGO_KEEP_0__ 채널에 대한 구현 세부 정보에 대해 __CAPGO_KEEP_2__ 테스트 버전 솔루션에 대한 __CAPGO_KEEP_0__ 제품 워크플로우에 대해 테스트 버전 솔루션, __CAPGO_KEEP_3__ 버전 목표 솔루션에 대한 __CAPGO_KEEP_0__ 제품 워크플로우에 대해 버전 목표 솔루션.

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

Capgo의 버그가 생긴 경우, 앱 스토어 승인까지 기다리지 않고 Capgo을 통해 픽스를 배포하세요. 사용자는 배경에서 업데이트를 받으면서 네이티브 변경은 일반적인 검토 경로를 유지합니다.

시작하기

최신 블로그 글

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