特定のユーザーに即時で変更を配信し、テストフライトまたはGoogle Playから新しいビルドをダウンロードし、インストールすることを求めることなく、変更をレビューおよびフィードバックを受け取ることができるかもしれませんか?
私が顧客に実装を求められた改善がすぐに実装できたが、結果を検証するためにユーザー全員にアップデートを配信する必要があったり、顧客用に一時的なビルドを作成する必要があったりしました。
必要なのは柔軟性でした。開発者は、非技術的なステークホルダー、QA、または適切な場合のユーザー全体に異なるアップデートを提供できるようにしたいと考えていました。
プロダクションビルドは、ワークインプロセス版に切り替えてフィードバックを収集し、再びプロダクションに戻ることができませんでした。
それが チャンネルサーフィング によって可能になりました。ユーザーのデバイスにインストールされたアプリは、実行時でアップデートチャンネルを切り替えることができ、プロダクションアプリをレビューと反復のための柔軟なスペースに変えることができます。特に非技術的なステークホルダーがプロダクションアプリを使用して変更をテストし、フィードバックを直接提供できるため、非常に便利です。
アップデートチャンネルの理解
アップデートチャンネルは、Capgo が特定のビルドにアップデートをターゲットにする方法です。各ビルドはチャンネルと関連付けられており、そのチャンネルはどのアップデートを受け取るかを決定します。
例えば、チャンネルにアップデートを公開することで、チャンネルに所属していないユーザーに影響を与えることなくアップデートを配信できます。過去には、チャンネルを切り替えるには別のネイティブビルドをインストールする必要がありましたか、またはマニュアルでデバイスの割り当てをダッシュボードで変更する必要がありました。 preview Capgo のチャンネルでは、次のことができます: production__CAPGO_KEEP_0__
Channels in Capgo allow you to:
- 特定ユーザー集団に異なる機能を対象にする
- ユーザーを異なるチャネルに割り当ててA/Bテストを実行する
- 新機能を段階的にリリースする
- ベータテストプログラムを作成する
- 個々のユーザーで生産問題をデバッグする
アップデートチャネルについてはあまり知らない場合は、 Capgo チャネルドキュメント チャネルサーフィングとは何か?
チャネルサーフィングは、インストール済みのアプリが再インストールせずに異なるアップデートストリームからデータを取得できるようにする機能です。インストール済みのアプリは実行時、更新チャネルを切り替えることができ、切り替えたチャネルから更新を受け続けるまでは、別のチャネルに切り替えるまで、更新を受け続けます。
実際的には、製品オーナーまたはQAが、
ビルドを、 production 例えば、 preview チャンネルを切り替える方法 production 再インストールや別のプレビュー ビルドは必要ありません。
チャンネルサーフィングの仕組みは、更新クライアントにアプリが使用するチャンネルを選択させることです。この選択は実行時で変更でき、効果が切れるまで続きます。
チャンネルサーフィングの実装方法
チャンネルサーフィングを試す前に、プロジェクトをCapgo Live Updatesで設定する必要があります。設定方法はCapgoのクイックスタートガイドを参照してください。 Capgo ダッシュボードで、各チャンネルに「デバイスが自ら関連付けられることを許可する」オプションを有効にすると、チャンネルサーフィングの設定は完了です。.
Capgo の設定変更や構成変更は必要ありません。 チャンネルサーフィングの基本は、1 つのcode の呼び出しで実現されています。
この呼び出しは、API から更新を取得する際に使用するチャンネルを設定します。
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({ channel: 'your-channel' });
setChannel Capgo の詳細についてはこちらを参照してください。 Learn more about the setChannel API.
チャンネル切り替えの即時性は、__CAPGO_KEEP_0__ のバージョン 5.34.0 以降で利用可能です。
バージョン 5.34.0、6.34.0、7.34.0、または 8.0.0 から始めて (あなたのメジャーバージョンに応じて) setChannel() 機能が異なり、速くなります:
- バックエンド検証 (読み取り専用): Capgo バックエンドにリクエストを送信して、チャンネルが許可されているかどうかを検証します
- ローカル ストレージの更新: 検証が成功すると、デバイスのローカル ストレージにチャンネルが保存されます
- 即時効果: 次の更新チェックでは、新しいチャンネルが即座に使用されます
以前は setChannel() チャンネル オーバーライドをバックエンド データベース (例: ダッシュボードまたは API の変更) に保存していました。デバイスは、バックエンドの再同期を待つ必要がありました (最大 2 分) ため、新しいチャンネルが認識されるまでに時間がかかりました。新しい動作では、検証のみバックエンドから読み取り、ローカルに保存するため、チャンネル Switch が即時になりました。
チャンネル Switch の完全なフロー
より良いユーザー体験を実現するには、チャンネルを切り替えてアプリを再起動するだけでは十分ではないことが多いです。一般的なアプローチは、すぐにアップデートを確認し、利用可能な場合はダウンロードし、アプリを再読み込みして、ユーザーが選択したチャンネルのアップデートに直接到達できるようにすることです。
一般的なフローは次のようになります。
- チャンネルを切り替える (
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');
このフローをどのように構成するかはあなた次第です。ステップを複数のインタラクションに分割するか、すべて一度に実行するか、どちらでもかまいません。どのように構成するかはあなた次第ですが、失敗を考慮することを忘れないでください。ネットワークの問題や無効なチャンネルなど、アップデートを適用することができなくなる可能性があります。
唯一の要件: 自動割り当てを有効にする
これがチャンネルサーフィングを有効にするために必要な唯一のことです。 アプリがチャンネルを切り替えるために setChannel()、そのチャンネルをCapgoダッシュボードで自分自身の割り当てを有効にする必要があります:
- __CAPGO_KEEP_0__ダッシュボードの チャンネル section in your Capgo dashboard
- __CAPGO_KEEP_0__ダッシュボードの
- チャンネル名をクリックしてください 有効
- 「デバイスが自分自身の割り当てを許可する」

チャンネル設定で自分自身の割り当てを有効にする defaultChannel それだけです。アプリの設定変更は必要ありません。必要なのは、ユーザーが切り替えることができるチャンネルに自分自身の割り当てを有効にすることだけです。
この設定が無効の場合、チャンネル切り替えの呼び出しを試みるとエラーが発生します。 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({});
デバイスを特定のチャンネルから解除し、デフォルトのチャンネルに戻るため、 defaultChannel config またはクラウドのデフォルトに戻ります。
チャンネルサーフィングのテスト方法
動画チャンネル間の切り替えを実際に確認するには、リリースビルドが必要です - @capgo/capacitor-updater APIはリリースビルド用に設計されています。デバッグビルドの場合、アプリは通常、開発サーバーからJavaScriptを読み込むのではなく、通常の更新フローを回避します。
前提条件
チャンネル間の切り替えには、各チャンネルで「デバイスの自己関連付けを許可する」にチェックを入れるだけです。アプリの設定変更は必要ありません。 テストビルドの作成 通常のビルドを実行します:
次に、XcodeまたはAndroid Studioを使用してネイティブビルドを作成するか、CI/CDパイプラインを使用します。アプリは、__CAPGO_KEEP_0__ダッシュボードで設定されているクラウドのデフォルトチャンネルに起動します。
異なるチャンネルへの更新の公開
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.
その後、アプリ内でチャンネル切り替えUIに移動し、チャンネル切り替えをトリガーします。アプリは選択したチャンネルから更新を取得し、新しい更新にリロードします。
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.
チャンネル切り替え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_KEEP_0__で最も信頼できるバグの修正方法は、同じチャンネルに知られている良い更新を公開することです。この作業により、チャンネルの履歴の先頭に新しい更新が作成され、クライアントはこれを最新のバージョンとして適用します。
Capgoは、クライアントに前の安定した更新を再適用するか、ビルドに組み込まれた更新に戻るように指示するロールバックメカニズムも提供します。
データ移行に関する考慮事項
チャンネルを切り替えることは、実行中のアプリのJavaScriptバンドルを変更します。アプリがチャンネル間で互換性のないマイグレーションやデータの形状に依存している場合、前後逆に切り替えることで問題が生じる可能性があります。
例えば、ベータアップデートがデータベースのマイグレーションを適用した場合、プロダクションバージョンは新しいスキーマを理解できない可能性があります。開発者は、更新がチャンネル間で安全に切り替えられるようにするか、必要に応じて切り替えを一方向に制限する必要があります。
チャンネルサーフィングは、モバイルの開発を改善するのに特に役立ちます。
チャンネルサーフィングは、プロダクション環境で変更を迅速に確認する必要がある場合に特に役立ちます。
急いで修正するバグの検証
想像してみてください。広く公開する前にバグの修正を検証する必要があります。チャンネルサーフィングを使用すると、変更は指定されたユーザーにのみ適用され、検証が完了したらプロダクションに戻すことができます。
ステークホルダーによるレビュー
製品オーナーまたはQAは、インストール済みのプロダクションビルドを別の更新チャンネルに切り替え、修正または機能を確認し、完了したら元に戻すことができます。
テストのstreamlining
これにより、非技術的な利害関係者をレビューと決定に参加させることが容易になり、ワークフローもスムーズになります。1 つの生産用ビルドは、テスト、フィードバック、検証のための柔軟なツールになります。
Use Cases
- 利用例QA Testing
- : QA チームは機能ブランチ間で切り替えることができますBeta Programs
- : ユーザーは早期アクセスを目的としてベータチャンネルに参加することができますStakeholder Review
- : プロダクトオーナーはリリース前に変更をプレビューすることができますA/B Testing
- : ユーザーを異なるチャンネルに割り当てて実験を行うことができますDebugging
比較: チャンネル変更方法
| 方法 | 効果時間 | 保存先 | 使用ケース |
|---|---|---|---|
setChannel() プラグインから |
即時 | デバイスのみ(ローカル) | ユーザーがアプリ内でチャンネルを切り替える |
| デバイスのオーバーライド | 最大2分 | バックエンドデータベース | 管理者による特定デバイスの変更 |
| API チャンネル割り当て | 最大 2 分 | バックエンドデータベース | 自動バックエンド統合 |
チャンネル切り替え UI を構築する際の最良のユーザー エクスペリエンスを確保するには、常にプラグインの setChannel() ベスト プラクティス
アクセス制限
- : 通常、チャンネル サーフィングは内部使用用 - すべてのユーザーに公開しないでくださいエラー処理
- : 常にチャンネル切り替え時にエラーを優雅に処理してくださいchannel switching
- 互換性を検証する: インストールされているネイティブ版と異なるチャンネルのアップデートが互換性があることを確認する
- チャンネルのドキュメント: 各チャンネルの目的を明確に記述する
- 使用状況の監視: デバッグ用にデバイスがどのチャンネルに所属しているかを追跡する
リソース
結論
チャンネルサーフィングは、Capacitorアプリの開発をどのように変えるかを変える。生産用ビルドを固定エンドポイントとして扱うのではなく、テスト、検証、迅速な開発のための柔軟なツールとして扱うことができる。
最近のプラグインバージョンで導入された即時チャンネル切り替え機能により、エクスペリエンスは今やシームレスになりました。ユーザーはチャンネルを切り替えると、待ち時間なく新しいチャンネルからのアップデートを受け取ることができます。
ステークホルダーとバグ修正を検証すること、ベータプログラムを実行すること、または特定のユーザーと問題をデバッグすることに関係なく、チャンネルサーフィングは、正しいアップデートを正しいユーザーに正しいタイミングで配信できる柔軟性を提供します。
Channel Surfing for Capgo: Runtimeでアップデートチャンネルを切り替える方法については、続きます。
Channel Surfing for __CAPGO_KEEP_0__: Runtimeでアップデートチャンネルを切り替える方法については、続きます。 Channel Surfing for Capgo: Runtimeでアップデートチャンネルを切り替える方法については、続きます。 Channel Surfing for __CAPGO_KEEP_0__: Runtimeでアップデートチャンネルを切り替える方法については、続きます。 Channel Surfing for __CAPGO_KEEP_0__: Runtimeでアップデートチャンネルを切り替える方法については、続きます。 Channel Surfing for __CAPGO_KEEP_0__: Runtimeでアップデートチャンネルを切り替える方法については、続きます。 Channel Surfing for __CAPGO_KEEP_0__: Runtimeでアップデートチャンネルを切り替える方法については、続きます。 Channel Surfing for __CAPGO_KEEP_0__: Runtimeでアップデートチャンネルを切り替える方法については、続きます。 Channel Surfing for __CAPGO_KEEP_0__: Runtimeでアップデートチャンネルを切り替える方法については、続きます。チャンネルルーティングとステージドロールアウトを計画するには、Channelsと接続します。 チャンネルにおける実装詳細のために ベータテスト ソリューション ベータテスト ソリューションの製品フローについて バージョン ターゲット ソリューション 製品フローについて