特定のユーザーに即時で変更を配信したいと思ったことはありませんか。テストフライトまたはGoogle Playから新しいビルドをダウンロードしてインストールすることを求めるのではなく?
私は、顧客から改善を求められたことがありましたが、結果を彼らの手元に届けるためにアップデートをすべてのユーザーに配信するリスクを伴うか、または一時的なビルドを作成するという手間を避けるために、個別のビルドを作成するという手間を避けるために、実験的な変更を実装することができました。
開発者は、非技術的なステークホルダー、QA、または適切な場合にユーザー全体に提供するなど、異なるグループのユーザーに異なるアップデートを提供したいと考えていました。
生産ビルドは、作業中のバージョンに切り替え、フィードバックを収集し、再び生産に戻ることができませんでした。
そのことの チャンネルサーフィング が可能になるのです。
ユーザーのデバイスにインストールされているアプリは、実行中のときにアップデートチャンネルを切り替えることができます。
Update channels are how Capgo targets updates to specific builds. Each build is associated with a channel, and that channel determines which updates it will receive.
特に、非技術的なステークホルダーがプロダクションアプリと一緒に仕事をする場合に、非常に便利です。 preview 彼らは、すでにインストールされているアプリで直接変更をテストし、フィードバックを与えることができます。 productionアップデートチャンネルの理解
Capgoは、特定のビルドへのアップデートをターゲットにするために使用するアップデートチャンネルの方法です。
- 各ビルドは、チャンネルと関連付けられており、そのチャンネルはどのアップデートを受け取るかを決定します。
- 例えば、ユーザーに影響を与えないようにアップデートを特定のチャンネルに公開することができます。
- 過去には、チャンネルを切り替えるには、別のネイティブビルドをインストールするか、またはマニュアルでデバイスの割り当てをダッシュボードで変更する必要がありました。
- ベータテストプログラムを作成する
- 個別ユーザーの生産問題をデバッグする
アップデートチャンネルについてはあまり知らない場合は、 Capgo チャンネルドキュメント チャンネルサーフィングとは
チャンネルサーフィングは、インストール済みのアプリが再インストールせずに異なるアップデートストリームからデータを取得できるようにする機能です。インストール済みのアプリは実行時、更新チャンネルを切り替えることができ、切り替えたチャンネルから更新を受け続けることができます。アプリがアンインストールされるか、別のチャンネルに切り替えるまで、新しいチャンネルから更新を受け続けることができます。
実際には、製品オーナーまたはQAが、
ビルドを、 production チャンネルに切り替えて、最新の変更を試すことができます。テストが終わったら、 preview に切り替えることができます。再インストールや別のプレビュービルドが必要なくて済みます。 production 内部的には、チャンネルサーフィングは、アプリが更新クライアントに使用するチャンネルを指定できるようにする機能です。この選択は実行時で変更でき、変更されたチャンネルが有効な状態で残ります。
Under the hood, channel surfing works by letting the app tell the updates client which channel to use. That choice can be changed at runtime and stays in effect until it’s cleared or replaced.
How to Implement Channel Surfing
Capgo Live Updatesを有効にする必要があります。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 の設定変更や構成変更は必要ありません。
チャンネルサーフィングの基本は、1つのAPI呼び出しで実現されています。
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({ channel: 'your-channel' });
Capgoの更新を取得する際に使用されるチャンネルを設定します。 setChannel API.
Instant Channel Switching (v5.34.0+)
Capgoのバージョン5.34.0、6.34.0、7.34.0、または8.0.0 (バージョンによって異なります) から 、 setChannel() より高速で、機能が異なります。
- バックエンド検証 (読み取り専用): Capgo バックエンドにリクエストが送信され、チャンネルが許可されているかどうか検証されます。
- ローカルストレージの更新: 検証が成功した場合、デバイスのローカルストレージにチャンネルが保存されます。
- 即時効果: 次のアップデートチェックでは、新しいチャンネルが即座に使用されます。
以前は setChannel() : チャンネルオーバーライドをバックエンドデータベース (例: ダッシュボードまたは API の変更) に保存していました。デバイスは、バックエンドの再生産 (最大 2 分) が完了するまで、新しいチャンネルが認識されるまで待ちます。新しい動作では、バックエンド (検証のみ) からのみ読み取り、ローカルに保存するため、チャンネルSwitchが即時になります。
完全なチャンネルSwitchフロー
: より良いユーザー体験を提供するために、通常はチャンネルSwitchだけでなく、次のアプリ再起動を待つだけではありません。一般的なアプローチは、すぐにアップデートをチェックし、利用可能な場合にダウンロードし、アプリを再読み込みして、ユーザーが選択したチャンネルのアップデートに直接到達するようにすることです。
一般的なフローは次のようになります:
- : チャンネルを変更する (
setChannel) - アップデートの確認 (
getLatest) - アップデートの取得と適用 (
download,setまたはnext) - Capgo チャンネル切り替えのしくみ
reload)
Capgo チャンネル切り替えのしくみ
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');
Capgo チャンネル切り替えのしくみ
Capgo チャンネル切り替えのしくみ
Capgo チャンネル切り替えのしくみ Capgo チャンネル切り替えのしくみ setChannel(), you must enable self-assignment for that channel in the Capgo dashboard:
- Capgo チャンネル切り替えのしくみ Capgo チャンネル切り替えのしくみ Capgo ダッシュボードのセクション
- 管理したいチャンネル名をクリックしてください
- 有効 「デバイスが自ら関連付けを許可する」
- 変更を保存

それだけです。アプリの設定変更は必要ありません。必要なのは、ユーザーが切り替えることができるチャンネルに自己割り当てを有効にすることだけです。 defaultChannel この設定が無効の場合、チャンネルを呼び出す試みは失敗し、イベントが発生します。
利用可能なチャンネルのリスト setChannel() __CAPGO_KEEP_0__ ダッシュボードのセクション 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({});
デバイスを特定のチャンネルから解除し、デフォルトのチャンネルに戻します。 defaultChannel チャンネルサーフィングのテスト
チャンネルサーフィングのテスト
リリースビルドが必要です。__CAPGO_KEEP_0__はリリースビルド用に設計されています。デバッグビルドの場合、アプリは通常、開発サーバーからJavaScriptを読み込むため、通常の更新フローを回避します。 @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.
前提条件
チャンネルサーフィングの唯一の要件は、各チャンネルで「デバイスが自分で関連付けを許可する」オプションを有効にすることです。 「デバイスが自分で関連付けを許可する」オプションを有効にする必要があります。 各チャンネルで「デバイスが自分で関連付けを許可する」オプションを有効にする必要があります。アプリの設定変更は必要ありません。
テストビルドの作成
通常のビルド作成:
bun run build && npx cap sync
次に、XcodeまたはAndroid Studioを使用してネイティブビルドを作成するか、CI/CDパイプラインを使用します。アプリは、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>
);
}
OTAアップデートの注意点
これらはすべてチャンネルサーフィングに特有のものではありませんが、実行時でチャンネルを切り替えるようになると、すぐに気づくようになります。
実行時バージョンの一致性
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__
アプリが実行するJavaScriptバンドルが変更されます。アプリがチャネル間で互換性のないマイグレーションやデータの形状に依存している場合、前後両方のチャネル間で切り替えることで問題が発生する可能性があります。
例えば、ベータ版のアップデートでデータベースのマイグレーションが行われた場合、プロダクション版は新しいスキーマを理解できない可能性があります。開発者は、更新がチャネル間で安全に切り替えられるようにするか、必要に応じて切り替えを一方向に制限する必要があります。
Why Channel Surfing Improves Mobile Iteration
チャネルサーフィングは、特に生産環境で変更を迅速に確認する必要がある場合に特に便利です。
Rapid Validation
緊急のバグ修正が必要な場合、変更を小規模なユーザーに限定して、変更を確認することができます。
Stakeholder Review
プロダクトオーナーまたはQAが、インストール済みの生産ビルドを別のアップデートチャネルに切り替え、修正または機能を確認し、確認が終わったら元に戻すことができます。
Streamlined Testing
これにより、非技術的なステークホルダーがレビューと決定に参加し、ワークフローをスムーズに保つことができます。生産ビルドは、テスト、フィードバック、検証のための柔軟なツールになります。
Use Cases
- QA Testing: QA チームが機能ブランチ間で切り替える
- ベータプログラム: ユーザーがリリース前に早期アクセスを受けるベータチャンネルに参加する
- ステークホルダーレビュー: リリース前に変更をプレビューする
- A/B テスト: ユーザーを異なるチャンネルに割り当てて実験を行う
- デバッグ: 特定のユーザーをデバッグチャンネルに切り替えて問題を診断する
比較: チャンネル変更方法
| 方法 | 効果時間 | 保存された場所 | 利用例 |
|---|---|---|---|
setChannel() プラグインから |
即時 | デバイスのみ(ローカル) | アプリ内でユーザーが起動したチャネル切り替え |
| デバイスのオーバーライド | 最大2分 | バックエンドデータベース | 管理者が特定のデバイスに変更 |
| API チャネル割り当て | 最大2分 | バックエンドデータベース | 自動バックエンド統合 |
チャンネル切り替えUIを構築する際の最良のユーザー体験を確保するには、常にプラグインの setChannel() ベストプラクティス
アクセス制限
- : 通常、チャンネルサーフィングは内部使用用 - すべてのユーザーに公開しないでくださいエラー処理
- : 常にチャンネル切り替え時にエラーを優雅に処理する互換性の確認
- : インストール済みのネイティブバージョンと異なるチャンネルでのアップデートは互換性があることを確認するチャンネルドキュメント
- __CAPGO_KEEP_0__ : __CAPGO_KEEP_0__ に関する明確なドキュメントを維持する
- 使用状況の監視: デバッグのために、どのデバイスがどのチャネルに接続されているかを追跡する
リソース
結論
チャネル間の切り替えは、Capacitor アプリの開発をどのように変えるかということです。生産用ビルドを固定のエンドポイントとして扱うのではなく、テスト、検証、迅速な開発のための柔軟なツールとして扱うことができます。
最近のプラグインバージョンで導入された即時チャネル切り替えにより、体験はすばらしいものになりました - ユーザーはチャネルを切り替えると、待ち時間なく新しいチャネルから更新を受け取ることができます。
ステークホルダーとバグ修正を検証すること、ベータプログラムを実行すること、または特定のユーザーと問題をデバッグすることなど、どのようなシナリオでも、チャネル間の切り替えは、正しいアップデートを正しいユーザーに正しいタイミングで配信できるようにします。
Channel Surfingから続けてCapgo:実行時でアップデートチャンネルを切り替える方法
あなたが使用している Channel Surfingから続けてCapgo:実行時でアップデートチャンネルを切り替える方法 チャンネルルーティングとステージドロールアウトを計画するには、Channel Surfingを チャンネル チャンネル チャンネル チャンネル ベータテストソリューション ベータテストソリューション ベータテストソリューション ベータテストソリューション バージョン対象ソリューション バージョン対象ソリューション用製品ワークフロー