メインコンテンツにジャンプ
チュートリアル

Capgoのアップデートチャンネル切り替え方法

Capgoを使用すると、特定のユーザーに即時でアップデートを配信できます。Capacitorアプリを再インストールせずにアップデートチャンネルを切り替えることができます。

マーティン・ドナディュー

マーティン・ドナディュー

コンテンツマーケター

Capgoのアップデートチャンネル切り替え方法

特定のユーザーに即時でアップデートを配信し、テストフライトまたはGoogle Playから新しいビルドをダウンロードする必要がなくなることを願ったことはありませんか?

私も、顧客から改善を求められたことがありましたが、実装した結果を彼らに提示するには、すべてのユーザーにアップデートを配信するリスクがあるか、または顧客用に一時的なビルドを作成するという手間が生じました。

必要なのは柔軟性でした。開発者は、非技術的なステークホルダー、QA、または適切な場合のすべてのユーザーにアップデートを配信することができるようにしたいと考えていました。

生産用ビルドは、作業中のバージョンに切り替え、フィードバックを収集し、再び生産用に戻ることができませんでした。

そのようなことは チャンネルサーフィング を可能にします。ユーザーのデバイスにインストールされたアプリは、実行中のときにアップデートチャンネルを切り替えることができ、生産用のアプリをレビューと反復のための柔軟なスペースに変えることができます。非技術的なステークホルダーが生産用のアプリと一緒に作業する場合に特に便利です。既にインストールされているアプリで変更をテストし、フィードバックを直接提供できるためです。

アップデートチャンネルの理解

アップデートチャンネルは、Capgo が特定のビルドにアップデートをターゲットする方法です。各ビルドはチャンネルと関連付けられており、そのチャンネルはどのアップデートを受け取るかを決定します。

たとえば、ユーザーに影響を与えないようにアップデートを特定の preview チャンネルに公開することができます。 production__CAPGO_KEEP_0__ のチャンネルは、次のことができます。

Channels in Capgo allow you to:

  • A/B テストを実行するために、ユーザーを異なるチャンネルに割り当てる
  • A/B テストを実行するために、ユーザーを異なるチャンネルに割り当てる
  • 新機能を段階的にリリースする
  • ベータテストプログラムを作成する
  • 個別ユーザーで生産問題をデバッグする

更新チャンネルについてはあまり知らない場合は、 Capgoチャンネルドキュメント 詳細については、

チャンネルサーフィングとは何か

チャンネルサーフィングは、インストール済みのアプリが再インストールせずに異なる更新ストリームからデータを取得できるようにする機能です。インストール済みのアプリは、実行中のruntimeで更新チャンネルを切り替えることができ、切り替えたチャンネルから更新を受け続けるまで、アンインストールまたは別のチャンネルに切り替えるまで続きます。

実際的には、製品オーナーまたはQAが、たとえば、 production チャンネルにビルドを切り替えることができます。最新の変更を試すことができます。テストが終わったら、 preview に切り替えてもいいのです。再インストールや別のプレビュービルドが必要ありません。 production again. There’s no need for a reinstall or a separate preview build.

内部では、チャンネルサーフィングは、アプリが更新クライアントに使用するチャンネルを選択させることで機能します。この選択肢は実行時で変更でき、クリアまたは置き換えされるまで効果を残します。

チャンネルサーフィングの実装方法

チャンネルサーフィングを試す前に、プロジェクトにCapgo Live Updatesを設定する必要があります。設定方法は、以下の Capgoのクイックスタートガイド.

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コールです。 このコールは、APIから更新を取得する際に使用されるチャンネルを設定します。.

setChannel __CAPGO_KEEP_0__についてもっと学びましょう。

即時チャンネル切り替え (v5.34.0+) プラグインバージョン 5.34.0、6.34.0、7.34.0、または 8.0.0 (メジャーバージョンに応じて) を使用している場合、 setChannel() 異なる方法で、はるかに速く:

  1. バックエンド検証 (読み取り専用): Capgo バックエンドにリクエストが送信され、チャンネルが許可されているかどうか検証されます
  2. ローカル ストレージの更新: 検証が成功すると、チャンネルはデバイスのローカル ストレージに保存されます
  3. 即時効果: 次のアップデート チェックでは、新しいチャンネルが即座に使用されます

以前は setChannel() チャンネル オーバーライドをバックエンド データベース (例: ダッシュボードまたは API の変更) に保存していました。デバイスは、2 分以内に新しいチャンネルが認識されるまで、バックエンドの再生産を待ちます。新しい動作では、バックエンドからのみ読み取り (検証) して、ローカルに保存するため、チャンネル Switch は即時になります。

チャンネル 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');

このフローをどのように構成するかはあなた次第です。ステップを複数のインタラクションに分割するか、すべて一度に実行するか、どちらでもかまいません。どのように構成するかはあなた次第ですが、失敗を考慮するようにしましょう。ネットワークの問題や無効なチャンネルなど、更新を適用できない原因は多数あります。

唯一の要件: 自分自身の割り当てを有効にする

この機能を有効にするには、以下の1つだけが必要です。 アプリがチャンネルを切り替えることができるようになる前に、チャンネルを切り替えるには、__CAPGO_KEEP_0__ ダッシュボードでそのチャンネルに対して自分自身の割り当てを有効にする必要があります。 setChannel(), you must enable self-assignment for that channel in the Capgo dashboard:

  1. をご覧ください。 チャンネル Capgo ダッシュボードのセクション
  2. 管理したいチャンネルの名前をクリックしてください
  3. 有効 “Allow devices to self associate”
  4. 変更を保存

チャンネル設定で自己割り当てを有効にします

あなたのアプリでは設定変更が必要ありません。必要なのは、ユーザーが切り替えることができるチャンネルに自己割り当てを有効にすることだけです。 defaultChannel この設定が無効の場合、チャンネルを呼び出そうとすると失敗し、イベントが発生します。

If this setting is disabled, any attempt to call setChannel() with this channel will fail and the channelPrivate event will fire.

利用可能なチャンネルの一覧

自分で割り当てることができるチャンネルのリストを取得できます。

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_KEEP_0__はリリースビルド用に設計されており、デバッグビルドでは通常の更新フローを回避するため、開発サーバーからJavaScriptを読み込むことができます。 @capgo/capacitor-updater API

前提条件

チャンネル間の切り替えには、各チャンネルで「デバイスの自己関連付けを許可する」にチェックを入れるだけです。アプリの設定変更は必要ありません。 “Allow devices to self associate” on each channel you want to allow switching to. No config changes are needed in your app.

Creating a Test Build

Build your app as usual:

bun run build && npx cap sync

Then create your native builds using Xcode or Android Studio, or use your CI/CD pipeline. The app will start on whichever channel is set as the cloud default in your Capgo dashboard.

Publishing Updates to Different Channels

Once the app is installed, publish updates to different channels:

# Publish to preview channel
npx @capgo/cli@latest bundle upload --channel preview

# Publish to production channel
npx @capgo/cli@latest bundle upload --channel production

From there, navigate to your channel surfing UI in the app and trigger the channel switch. The app should fetch the update from the selected channel and reload into the new update.

Building a Channel Switcher UI

Channel surfing is usually something you want to expose to a limited set of users, not to everyone using your app. For example, you might have a button available to authenticated employees only that switches the app to the preview channel.

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_KEEP_0__は、クライアントに前の安定したアップデートを再適用するか、ビルドに埋め込まれたアップデートに戻るように指示するロールバックメカニズムも提供しています。

__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__

チャンネルを切り替えることで、実行されるアプリのJavaScriptバンドルが変更されます。アプリがチャンネル間で互換性のないマイグレーションやデータの形状に依存している場合、前後逆に切り替えることで問題が生じる可能性があります。

例えば、ベータアップデートでデータベースのマイグレーションが適用された場合、プロダクションバージョンは新しいスキーマを理解できない可能性があります。開発者は、更新がチャンネル間で安全に切り替えられるようにするか、必要に応じて一方向に切り替えるようにする必要があります。

チャンネルサーフィングがモバイルのイテレーションを向上させる理由

チャンネルサーフィングは、特にプロダクション環境で変更を迅速に確認する必要がある場合に特に便利です。

迅速な検証

緊急のバグ修正が検証される必要がある場合、チャンネルサーフィングを使用すると、変更が特定のユーザーに隔離され、検証が完了したらプロダクションに戻ることができます。

利害関係者レビュー

製品オーナーまたはQAがインストール済みのプロダクションビルドを別のアップデートチャンネルに切り替え、修正または機能を確認し、完了したら元に戻すことができます。

テストの簡素化

これにより、非技術的な利害関係者がレビューと決定を下すのに役立つ一方で、ワークフローがスムーズになるため、テスト、フィードバック、検証に使用できるプロダクションビルドが柔軟に利用できるようになります。

  • QAテスト: QAチームが機能ブランチ間で切り替える
  • ベータプログラム: ベータチャンネルへの早期アクセスを希望するユーザー
  • ステークホルダーレビュー: リリース前に変更をプレビューする製品オーナー
  • A/Bテスト: ユーザーを異なるチャンネルに割り当てて実験を行う
  • デバッグ: 特定のユーザーをデバッグチャンネルに切り替えて問題を診断する

チャンネル変更方法の比較

: メソッド__CAPGO_KEEP_0__保存期間使用シナリオ
setChannel() プラグインから即時デバイスのみ (ローカル)アプリ内でユーザーがチャネルを切り替える
デバイスのオーバーライド最大 2 分バックエンドデータベース管理者が特定のデバイスに変更を加える
API チャネル割り当て__CAPGO_KEEP_0__バックエンドデータベース自動化されたバックエンド統合

チャネル切り替えUIを構築する際に最良のユーザー体験を得るには、常にプラグインの setChannel() __CAPGO_KEEP_0__

ベストプラクティス

  1. アクセス制限: チャンネルサーフィングは通常内部用途です - すべてのユーザーに公開しないでください
  2. エラー処理: チャンネル切り替え時に常にエラーを優雅に処理してください
  3. 互換性の確認: 異なるチャンネルでの更新は、インストール済みのネイティブバージョンと互換性があることを確認してください
  4. ドキュメント チャンネル: 各チャンネルの目的を明確に記述する
  5. 使用状況の監視: デバッグ用に、どのデバイスがどのチャンネルに接続されているかを追跡する

リソース

結論

Capacitor アプリの開発を迅速化するために、チャンネル サーフィングがどのように変化するかを理解することが重要です。

チャンネル間の切り替えが実現したことで、最新のチャンネンから即座に更新を受け取ることができるようになりました。

どのユーザーに、どの時点で、どのアップデートを配信するか、選択肢を増やして、適切なアップデートを適切なユーザーに配信することができます。

Capacitor アプリのリアルタイム更新

Capgo を使用して、ウェブ層のバグが生じた場合に、修正をアプリストアの承認待ちの日数を待たずに配信します。ユーザーはバックグラウンドで更新を受け取り、ネイティブの変更は通常のレビュー経路に残ります。

今すぐ始めましょう

最新のブログ記事

Capgoは、プロフェッショナルなモバイルアプリを作成するために必要な最良の洞察を提供します。