Page/area: Capgo marketing website. Role: Website copy sentence. Seen in: component doc/SignupCta.astro, component Hero.astro. Message key `hero_subtitle_v2` (Hero Subtitle V2).
インストール手順とこのプラグインの全マークダウンガイドを含むセットアップの質問をコピーしてください。
貼り付け用に準備されています。 Live UpdateCloudflare
API
SDKCapgoのバージョン対象システムは、以下の機能を提供します。
- npm bun
- バージョン対象化 非互換なバージョンのアプリに破壊的な変更を防ぐ
- 非互換なバージョンのアプリに到達しないように 複雑なロジックなしで複数のアプリバージョンを管理する
- 特定のユーザーセグメントにアップデートをシームレスに展開する バージョン対象化の重要性(特にAppFlowユーザー向け)
バージョン対象化の重要性(特にAppFlowユーザー向け)というセクション
Ionic AppFlowのご存知の通り、アプリのバージョンに合ったアップデートのみをユーザーに提供することが非常に重要です。AppFlowは自動的に__CAPGO_KEEP_0__バンドルをネイティブアプリのバージョンとマッチさせ、互換性のないJavaScriptが古いネイティブ__CAPGO_KEEP_1__に配信されるのを防ぎました。 __CAPGO_KEEP_0__は同じ安全性の保証を提供します, you know how critical it is to ensure users receive only compatible updates. AppFlow automatically matched live update bundles to native app versions, preventing incompatible JavaScript from being delivered to older native code.
Capgoは安全性の保証を提供します。、追加機能があります:
- バージョンマッチングのより細かい制御
- チャンネル、semver、ネイティブ制約を使用した複数の戦略
- バージョン配布のより良い視覚化
- APIとCLIの制御はダッシュボード管理とともに
このアプローチは、以下のシナリオで特に便利です:
- ユーザーがアプリの異なるメジャーバージョン (例: v1.x、v2.x、v3.x) を使用している場合
- 破壊的な変更をロールアウトする際にバックワード互換性を維持する必要がある場合
- 新しいバンドルが古いネイティブcodeを破壊しないようにしたい場合
- ユーザーを一つのバージョンから別のバージョンに段階的に移行する場合
- AppFlowから移行したい場合 同じ更新の安全性を維持したい場合
「どうやって動くのか」
セクションのタイトル「どうやって動くのか」Capgoは、ユーザーに互換性のあるアップデートをマッチングするために、複数層のアプローチを使用します:
- ネイティブバージョン制約: 不適合のネイティブバージョンに配布されるバンドルを防止する
- チャンネルベースのルーティング: アプリの異なるバージョンを異なるアップデートチャンネルにルーティングする
- シーケンスバージョン制御: メジャー/マイナ/パッチ境界を自動的にアップデートをブロックする
- デバイスレベルオーバーライド: 特定のデバイスまたはユーザーグループをターゲットする
バージョンマッチングフロー
バージョンマッチングフローgraph TD A[User Opens App] --> B{Check Device Override} B -->|Override Set| C[Use Override Channel] B -->|No Override| D{Check local plugin channel} D -->|setChannel value| E[Use local setChannel channel] D -->|No local channel| F{Check defaultChannel in App} F -->|Has defaultChannel| G[Use App's defaultChannel] F -->|No defaultChannel| H[Use Cloud Default Channel] C --> I{Check Version Constraints} E --> I G --> I H --> I I -->|Compatible| J[Deliver Update] I -->|Incompatible| K[Skip Update]チャンネルベースのバージョンルーティング
チャンネルベースのバージョンルーティングライブアップデートのバージョン対象設定 推奨アプローチ バージョンアップデートと重大な変更の管理に最適なアプローチです。AppFlow の配信モデルに似ています。
- (100,000 ユーザー) → チャンネル
productionchannel - App v2.x (50,000ユーザーに重大な変更を含む) →
v2channel - App v3.x (10,000のベータユーザー) →
v3channel
Step 1: 各主バージョンごとにチャンネルを設定する
Section titled “Step 1: 各主バージョンごとにチャンネルを設定する”// capacitor.config.ts for version 1.x buildsimport { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = { appId: 'com.example.app', appName: 'Example App', plugins: { CapacitorUpdater: { autoUpdate: 'atBackground', defaultChannel: 'production', // or omit for default } }};
export default config;// capacitor.config.ts for version 2.x buildsconst config: CapacitorConfig = { appId: 'com.example.app', appName: 'Example App', plugins: { CapacitorUpdater: { autoUpdate: 'atBackground', defaultChannel: 'v2', // Routes v2 users automatically } }};// capacitor.config.ts for version 3.x buildsconst config: CapacitorConfig = { appId: 'com.example.app', appName: 'Example App', plugins: { CapacitorUpdater: { autoUpdate: 'atBackground', defaultChannel: 'v3', // Routes v3 users automatically } }};ステップ 2: チャンネルを作成
ステップ 2: チャンネルを作成# Create channels for each major versionnpx @capgo/cli channel add productionnpx @capgo/cli channel add v2npx @capgo/cli channel add v3
# Enable self-assignment so apps can switch channelsnpx @capgo/cli channel set production --self-assignnpx @capgo/cli channel set v2 --self-assignnpx @capgo/cli channel set v3 --self-assignステップ 3: バージョンに特化したパッケージをアップロード
ステップ 3: バージョンに特化したパッケージをアップロード# For v1.x users (from v1-maintenance branch)git checkout v1-maintenancenpm run buildnpx @capgo/cli bundle upload --channel production
# For v2.x users (from v2-maintenance or main branch)git checkout mainnpm run buildnpx @capgo/cli bundle upload --channel v2
# For v3.x users (from beta/v3 branch)git checkout betanpm run buildnpx @capgo/cli bundle upload --channel v3- ゼロ code の変更 - チャネルルーティングは自動的に行われます
- 明確な区別 - 各バージョンには独自のアップデートパイプラインがあります
- 柔軟なターゲット - 特定のバージョングループにアップデートをプッシュします
- 安全なロールアウト - 不互換バージョンに到達することなく、破壊的な変更はありません
戦略 2: セマンティック バージョニング コントロール
「戦略2:セマンティックバージョニングコントロール」Capgoの組み込み セマンティックバージョニングコントロール メジャーバージョン間の自動更新を無効
「メジャーバージョン間の自動更新を無効」
ターミナル画面# Create a channel that blocks major version updatesnpx @capgo/cli channel add stablenpx @capgo/cli channel set stable --disable-auto-update majorアプリケーション版
- は、 1.2.3 アップデートを受信します。 1.9.9
- は、 NO バージョンを受け取らない 2.0.0 自動的に
- 古いネイティブ code への破壊的な変更を防ぐ
- 比較は送信されたネイティブのベースラインを使用します
version_build
詳細な制御オプション
「詳細な制御オプション」のセクション# Block target bundles outside the native major.minor line (1.2.x won't get 1.3.0)npx @capgo/cli channel set stable --disable-auto-update minor
# Block target bundles outside the exact native MAJOR.MINOR.PATCH core (1.2.3 won't get 1.2.4)npx @capgo/cli channel set stable --disable-auto-update patch
# Allow all updatesnpx @capgo/cli channel set stable --disable-auto-update noneNative バージョン制約戦略3
「Strategy 3: Native Version Constraints」のセクション各バンドルに最低限のネイティブ アプリ バージョン (min_update_version) を指定し、Capgo はネイティブ バイナリが新しいバージョンであるデバイスにのみ配信するようにします。
この機能はチャンネル メタデータ の戦略 (--disable-auto-update metadata) を使用します。 または --min-update-version or --auto-min-update-version アップロード時に。 --native-version CLI フラグはありません。
チャンネルでメタデータ ターゲットを有効にします。
「チャンネルでメタデータ ターゲットを有効にします」セクションのタイトル。# one-time: require min_update_version metadata on uploads to this channelnpx @capgo/cli@latest channel set production --disable-auto-update metadataコピーする
コピーアップロード時に、最低のネイティブ バージョンを設定します。
# This bundle requires native version 2.0.0 or highernpx @capgo/cli@latest bundle upload \ --channel production \ --min-update-version "2.0.0"Native パッケージの互換性から Capgo でフロアを設定する
npx @capgo/cli@latest bundle upload \ --channel production \ --auto-min-update-version用途
用途-
新しいネイティブ プラグインが必要
ターミナル ウィンドウ # Bundle needs Camera plugin added in v2.0.0npx @capgo/cli@latest bundle upload \--channel production \--min-update-version "2.0.0" -
Breaking Native API Changes
ターミナル ウィンドウ # Bundle uses new Capacitor 6 APIsnpx @capgo/cli@latest bundle upload \--channel production \--min-update-version "3.0.0" -
ネイティブ プラグインの変更
ターミナル ウィンドウ # one-time: enable metadata gating on betanpx @capgo/cli@latest channel set beta --disable-auto-update metadata# Test bundle only on latest native versionnpx @capgo/cli@latest bundle upload \--channel beta \--min-update-version "2.5.0"
段階的な移行
戦略 4: 自動ダウングレード防止「戦略 4: 自動ダウングレード防止」のセクション
__CAPGO_KEEP_0__
チャンネル設定で有効Capgo ダッシュボードで
- 行きましょう Go to チャンネル
- チャンネルを選択 有効
- 「ネイティブ下で自動ダウングレードを無効」
Via CLI:
npx @capgo/cli@latest channel set production --no-downgrade日本語
「例」- ユーザーのデバイス:ネイティブ版 1.2.5
- チャンネルバンドル:バージョン 1.2.3
- 結果: ダウングレードの場合、更新はブロックされます
これは、次のような場合に便利です。
- ユーザーがアプリストアから新しいバージョンを手動でインストールした場合
- ユーザーが最新のセキュリティパッチを保証したい場合
- バグのリグレッションを防止したい場合
デバイスレベルでのターゲット設定:戦略5
「デバイスレベルでのターゲット設定:戦略5」特定デバイスまたはユーザーグループのチャネル割り当てをオーバーライドします。
特定バージョンを強制する
「特定バージョンを強制する」セクションimport { CapacitorUpdater } from '@capgo/capacitor-updater'
// Force beta testers to use v3 channelasync function assignBetaTesters() { const deviceId = await CapacitorUpdater.getDeviceId()
// Check if user is beta tester if (isBetaTester(userId)) { await CapacitorUpdater.setChannel({ channel: 'v3' }) }}コピー
コピーCapgo ダッシュボードで
- コピー コピー コピー
- コピー コピー または バージョンを設定
- 特定のチャネルまたはバンドルのバージョンで上書き
- デバイスは上書きされたソースからアップデートを受信します
完全なAppFlowスタイルのワークフロー
「完全なAppFlowスタイルのワークフロー」のセクションここでは、すべての戦略を組み合わせた完全な例を紹介します。
1. 初期設定 (アプリ v1.0.0)
「1. 初期設定 (アプリ v1.0.0)」のセクション# Create production channel, then enable metadata min-version gatingnpx @capgo/cli@latest channel add productionnpx @capgo/cli@latest channel set production \ --disable-auto-update metadata \ --no-downgradeconst config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'atBackground', defaultChannel: 'production', } }};2. アプリケーション バージョン 2.0.0 の破壊的変更
2. アプリケーション バージョン 2.0.0 の破壊的変更# Create v2 channel for new versionnpx @capgo/cli@latest channel add v2npx @capgo/cli@latest channel set v2 \ --disable-auto-update metadata \ --no-downgrade \ --self-assign
# Create git branch for v1 maintenancegit checkout -b v1-maintenancegit push origin v1-maintenance// capacitor.config.ts for v2.0.0const config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'atBackground', defaultChannel: 'v2', // New users get v2 channel } }};3. バージョン 2.0.0 と 2.1.0 の両方にプッシュ アップデート
3. バージョン 2.0.0 と 2.1.0 の両方にプッシュ アップデート# Update v1.x users (bug fix)git checkout v1-maintenance# Make changesnpx @capgo/cli@latest bundle upload \ --channel production \ --min-update-version "1.0.0"
# Update v2.x users (new feature)git checkout main# Make changesnpx @capgo/cli@latest bundle upload \ --channel v2 \ --min-update-version "2.0.0"4. バージョン分布の監視
「4. バージョン分布の監視」Capgo ダッシュボードを使用して、以下を追跡します。
- v1 と v2 のユーザー数
- バンドル採用率 (バージョンごと)
- バージョンごとのエラーまたはクラッシュ
5. 旧バージョンの非推奨
「5. 旧バージョンの非推奨」v1 の使用率が閾値以下の場合:
# Stop uploading to production channel# Optional: Delete v1 maintenance branchgit branch -d v1-maintenance
# Move all remaining users to default# (They'll need to update via app store)チャンネル順位
「チャンネル順位」Capgoが複数のチャンネル設定を持つ場合、使用される順位順序は次のようになります。
- デバイスオーバーライド (ダッシュボードまたはAPI) - 最高優先度で、デバイスオーバーライドUIに表示されます。
- ローカルプラグインチャンネル via
setChannel()- デバイス上のみ保存され、デバイスオーバーライドUIに表示されません。 - defaultChannel capacitor.config.ts
- デフォルトチャンネル (Cloud設定) - 最低優先度
ベストプラクティス
「ベストプラクティス」1. メジャーバージョンでは常にdefaultChannelを設定する
「1. メジャーバージョンでは常にdefaultChannelを設定する」// ✅ Good: Each major version has explicit channel// v1.x → production// v2.x → v2// v3.x → v3
// ❌ Bad: Relying on dynamic channel switching// All versions → production, switch manually2. セマンティック バージョニングを使用する
セクション「2. セマンティック バージョニングを使用する」# ✅ Good1.0.0 → 1.0.1 → 1.1.0 → 2.0.0
# ❌ Bad1.0 → 1.1 → 2 → 2.53. 分離されたブランチを維持する
セクション「3. 分離されたブランチを維持する」# ✅ Good: Separate branches per major versionmain (v3.x)v2-maintenance (v2.x)v1-maintenance (v1.x)
# ❌ Bad: Single branch for all versions4. リリース前にテストする
セクション「4. リリース前にテストする」# one-time: create beta and enable metadata gating# (production is set up in the complete workflow above)npx @capgo/cli@latest channel add betanpx @capgo/cli@latest channel set beta --disable-auto-update metadata
# Test on beta channel firstnpx @capgo/cli@latest bundle upload \ --channel beta \ --auto-min-update-version
# Monitor for issues, then promote to productionnpx @capgo/cli@latest bundle upload \ --channel production \ --auto-min-update-version5. バージョン分布の監視
バージョン分布の監視ダッシュボードを定期的に確認してください。
- ユーザーが最新のネイティブバージョンにアップグレードしているかどうか?
- 古いバージョンが高トラフィックを受けているかどうか?
- 古いチャンネルを非推奨にするべきか?
Ionic AppFlowとの比較
Ionic AppFlowからチームが移行している場合__CAPGO_KEEP_0__のバージョン対象設定とどう違うか? Ionic AppFlow, here’s how Capgo’s version targeting compares:
| 機能 | Ionic AppFlow | Capgo |
|---|---|---|
| バージョン対象 | バージョンに基づくルーティング | ネイティブバージョンに基づく自動 defaultChannel ネイティブバージョンを通じて |
| + 多数の戦略 | シーケンスバージョン | 基本的なサポート --disable-auto-update 高度な |
| (メジャー/マイナー/パッチ) | マニュアル設定 (AppFlow ダッシュボード) | 組み込み --min-update-version / --auto-min-update-version メタデータ チャネル |
| チャネル管理 | Web UI + CLI | Web UI + CLI + API |
| デバイスオーバーライド | 制限されたデバイスレベル制御 | フルコントロール (ダッシュボード/API) |
| ダウングレード防止 | はい | はい (via) --no-downgrade |
| バージョン管理 | 手動のブランチ/チャネル管理 | チャネル優先の自動管理 |
| 自主管理 | いいえ | はい (完全な制御) |
| バージョン分析 | 基本 | バージョンごとの詳細なメトリクス |
トラブルシューティング
トラブルシューティング更新を受け取らないユーザー
更新を受け取らないユーザー確認してください
-
チャネル割り当て: デバイスが正しいチャネルにありますか
const channel = await CapacitorUpdater.getChannel()console.log('Current channel:', channel) -
バージョン制約: バンドルのネイティブバージョン要件を確認してください
- ダッシュボード → バンドル → 「ネイティブ バージョン」列を確認
-
Semver設定: チャンネルの
disable-auto-update設定ターミナル画面 npx @capgo/cli channel list -
コピーデバイス オーバーライド
- : デバイスが手動オーバーライドを実行しているかどうかを確認
ダッシュボード → デバイス → デバイスを検索 → チャンネル/バージョンを確認
バンドルが誤ったバージョンに配信された- バンドルが誤ったバージョンに配信されたセクションのタイトルです。: 正しいチャネルが選択されていることを確認する
capacitor.config.ts - バンドルアップロード確認: 指定されたチャネルにバンドルがアップロードされたことを確認する
- Live Update の最小バージョンを検査: 確認する
--min-update-version(または--auto-min-update-versioncontext--disable-auto-update metadata
チャネルが指定されたバージョンを使用していることを確認する
Breaking Changes Affecting Old Versions- Section titled “Breaking Changes Affecting Old Versions”Immediate Fix
- : 影響を受けるデバイスに安全なバンドルを強制する
- 長期解決策: バージョン管理されたチャンネルを作成し、分離されたブランチを維持する
- 予防: 代表的なデバイスでアップデートをテストすることから始めてロールアウトする
イオニック アプリフローの移行
セクション “イオニック アプリフローの移行”イオニック アプリフローの場合 : __CAPGO_KEEP_0__ への移行の際に、バージョン対象化は大幅に改善された柔軟性を持っています, バージョン対象化は Capgo における Live Update と同様に機能し、より多くの柔軟性が実現されています。
セクション “概念マッピング”
アプリフローの概念| アプリフローの場合 | Capgo (kakushu) | Notes |
|---|---|---|
| ライブアップデートチャンネル | Capgo チャンネル | 同様の概念、より強力なもの |
| ネイティブバージョンロック | --min-update-version / --auto-min-update-version | より細かい制御 |
| チャンネル優先順位 | チャンネル優先順位 (オーバーライド → クラウド → デフォルト) | より透明な優先順位 |
| 展開対象 | チャンネル + semver制御 | 複数の戦略が利用可能 |
| 生産チャネル | production チャネル (または任意の名前) | 柔軟な名前付け |
| Gitベースのデプロイ | CLI ブランチからバンドルアップロード | 同じワークフロー |
| 自動バージョンマッチング | defaultChannel + バージョン制約 | 複数の戦略を組み合わせた強化 |
AppFlowユーザーのための主な違い
「AppFlowユーザーのための主な違い」のセクション- より多くの制御: Capgo が提供する複数の戦略 (チャンネル、semver、ネイティブ バージョン) を組み合わせることができます
- より良い視野: ダッシュボードはバージョン分布と互換性の問題を表示します
- API アクセス: バージョン ターゲットの完全なプログラム的制御
- 自社ホスティング: 同じバージョンロジックを持つアップデートサーバーを実行するオプション
移行手順
「移行手順」のセクション- AppFlow チャンネルをマップする に Capgo チャンネル (通常 1:1)
- バージョン対象設定
defaultChannelでcapacitor.config.ts各主バージョン - セマンティックバージョニングのルールを設定 バージョン境界での自動ブロッキングが必要な場合
- バージョンごとのパッケージをアップロード を使用
--min-update-versionチャンネルはメタデータ戦略を使用する必要があります - バージョン分布を監視 Capgo ダッシュボードで
高度なパターン
「高度なパターン」バージョンごとの段階的ロールアウト
「バージョンごとの段階的ロールアウト」// Gradually migrate v1 users to v2async function migrateUsers() { const deviceId = await CapacitorUpdater.getDeviceId() const rolloutPercentage = 10 // Start with 10%
// Hash device ID to get deterministic percentage const hash = hashCode(deviceId) % 100
if (hash < rolloutPercentage) { // User is in rollout group - migrate to v2 await CapacitorUpdater.setChannel({ channel: 'v2' }) }}コンテキスト: Capgo マーケティング ウェブサイト。役割: UI ラベル。表示場所: page agents/[slug].astro。メッセージキー `agents_page_copy_label` (Agents Page Copy Label)。
バージョンごとの機能フラグ// Enable features based on native versionasync function checkFeatureAvailability() { const info = await CapacitorUpdater.getDeviceId() const nativeVersion = info.nativeVersion
if (compareVersions(nativeVersion, '2.0.0') >= 0) { // Enable features requiring v2.0.0+ enableNewCameraFeature() }}「バージョンごとの機能フラグ」
バージョン間での A/B テスト// Run A/B tests within same native versionasync function assignABTest() { const nativeVersion = await getNativeVersion()
if (nativeVersion.startsWith('2.')) { // Only A/B test on v2 users const variant = Math.random() < 0.5 ? 'v2-test-a' : 'v2-test-b' await CapacitorUpdater.setChannel({ channel: variant }) }}概要
概要Capgoは、バージョンに特化したアップデートの配信に複数の戦略を提供します:
- チャンネルベースのルーティング: バージョン分離を自動的に実行する
defaultChannel - シémantiqueバージョニング: メジャー/マイナー/パッチ境界を超えてアップデートを防止する
- ネイティブバージョン制約: バンドルのための最低限のネイティブバージョンを要求する
- オートダウングレード防止: 新しいネイティブバージョンに古いバンドルを配信しない
- デバイスのオーバーライド: テストとターゲットのための手動制御
これらの戦略を組み合わせると、より多くの柔軟性と制御を備えたAppFlowスタイルの自動更新配信が可能になります。アプリのバージョニングとデプロイワークフローに最も適したアプローチを選択してください。
詳細な特定の機能については以下を参照してください:
- アップデートの変更点ガイド 詳細なチャンネルバージョニング戦略
- チャンネル管理 完全なチャンネル設定のリファレンス
- 更新の動作 ネイティブのバージョン遅延と条件
バージョン対象化から続けて
バージョン対象化から続けてLive Update バージョン対象設定 バージョン対象設定 チャンネル チャンネル チャンネル チャンネル チャンネル チャンネル チャンネル ベータテストソリューション バージョン対象設定ソリューション バージョン対象化ソリューションの製品ワークフローについて。