跳过内容

通道

当您在应用程序中安装__CAPGO_KEEP_0__实时更新__CAPGO_KEEP_1__时,任何配置为监听该频道的设备都会检查可用更新。您可以随时更改频道指向的构建,并且也可以回滚到之前的构建。 install the Capgo Live Updates SDK 频道不提供保密性

设备如何选择频道(优先级)

设备如何选择频道(优先级)

当设备检查更新时,Capgo 根据以下严格顺序(优先级最高)决定使用哪个频道:

  1. 强制设备映射(控制台) – 手动将特定设备 ID 固定到频道中。用于紧急调试或在单个真实用户下进行受控测试。始终获胜。
  2. Cloud 强制(每设备)通过控制台或 API – 当您在控制台或 API 中更改设备的频道时创建。用于 QA 用户在特征 / PR 频道之间切换或重现用户问题。重新安装二进制文件不会清除它;删除设备条目会清除它。
  3. 插件 setChannel() 本地频道 – 当应用程序调用时创建 setChannel() 并且后端验证目标通道是否允许自我赋值。 选择的通道将在该设备上存储本地,立即生效,并不在设备覆盖UI中显示。
  1. Capacitor 配置 defaultChannel (测试构建默认) – 如果在 capacitor.config.* 中存在,且没有强制/覆盖/本地频道存在,应用程序将在此频道启动(例如,)。 beta, qa, pr-123用于 TestFlight / 内部构建,以便测试者自动进入预发布频道。生产构建通常不设置此项。
  2. Cloud 默认频道(主要路径 ~99% 的用户) – 如果在控制台中标记了默认频道,所有正常用户(无强制,无控制台/API 覆盖,无插件本地频道,无配置 defaultChannel)将连接到此频道。立即更改以推出或回滚—无新二进制文件。如果您有平台特定的默认值(例如,iOS-only、Android-only、Electron-only),每个设备将连接到匹配其平台的默认值。

最佳实践:

  • 将 1–4 视为异常/测试层;当您设置云默认值时,真实用户应该流入它。如果您选择不设置一个,请务必对用户的连接方式有明确的认识(通常通过 defaultChannel 在配置或设备级别进行覆盖)。
  • 仅配置 defaultChannel 在您明确向测试者分发的二进制文件中。将其设置为未设置将保持生产逻辑在控制台中集中。
  • 建议在生产环境中谨慎使用—主要用于QA或针对性的诊断. setChannel() 如果一个通道在平台(iOS/Android/Electron切换)上被禁用,而它原本应该被选择,那么选择过程会跳过它继续下一项.

强制 > Dashboard/__CAPGO_KEEP_0__ Override > 插件

Summary: Force > Dashboard/API Override > Plugin setChannel() > 云默认. defaultChannel 默认通道行为

单个默认值(最常见) defaultChannel in the Capacitor config will receive updates. When you do choose to mark defaults, keep these patterns in mind:

  • targetLanguage":"Simplified Chinese" protectedTokens":["Cloudflare","Capacitor","GitHub","Capgo","code","API","SDK","CLI","npm","bun"] ios-production texts":["平台特定默认值","– 如果您根据平台(例如","仅 iOS","仅 Android","仅 Electron"),标记每个平台的默认值。 iOS 设备将前往 iOS 默认值,Android 设备将前往 Android 默认值,Electron 应用将前往 Electron 默认值。", android-production 请记住,云端默认值和"在"占据相同的决策层。如果您设置了云端默认值,您不需要在 __CAPGO_KEEP_0__ 配置中重复该值—在生产构建中留空。保留"用于您故意将二进制文件发送给测试者或 QA 时,希望它们在非生产通道上启动,即使云端默认值不同。", electron-production 您可以在控制台中随时更改默认值。当您切换默认值时,新设备立即遵循新的路由,现有设备在下一次检查时将遵循正常的优先级规则。",

设置通道"] defaultChannel Platform-specific defaults capacitor.config.* both occupy the same decision layer. If you set a cloud default, you don’t need to duplicate the value in your Capacitor config—leave defaultChannel with only iOS enabled, defaultChannel with only Android enabled, and

with only Electron enabled), mark each one as the default for its platform. iOS devices go to the iOS default, Android devices go to the Android default, and Electron apps go to the Electron default.

Remember that the cloud default and "in" occupy the same decision layer. If you set a cloud default, you don’t need to duplicate the value in your __CAPGO_KEEP_0__ config—leave empty for production builds. Reserve "for binaries you intentionally ship to testers or QA when you want them to start on a non-production channel even if the cloud default is different." You can change defaults at any time in the dashboard. When you swap a default, new devices obey the new routing immediately and existing devices follow the normal precedence rules the next time they check in." Setting up a Channel

Setting up a Channel

在加入会员过程中,您创建第一个频道(大多数团队称之为“生产”),但没有任何内容被锁定—you可以随时重命名或删除任何频道。要添加更多频道:

  1. 前往Capgo控制台的“频道”部分
  2. 点击“新频道”按钮
  3. 输入频道名称并点击“创建”

频道名称可以是您喜欢的任何内容。一个常见的策略是将频道与开发阶段匹配,例如:

  • Development - 在本地设备或模拟器上测试实时更新
  • QA - 为 QA 团队验证更新之前的更广泛发布
  • Staging - 在生产环境中进行最终测试
  • Production - 用户从应用商店接收的应用程序版本

在应用程序中配置频道

Configuring the Channel in Your App

创建了您的频道后,您需要配置应用程序以监听适当的频道。在本例中,我们将使用 Development __CAPGO_KEEP_0__.

打开您的 capacitor.config.ts (或 capacitor.config.json)文件。在 plugins 部分中, optionally 设置 defaultChannel 用于 测试构建 (内部/ QA)。对于生产构建,建议省略它,以便设备使用 Cloud Default,除非显式覆盖。

import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
// For a QA/TestFlight build – testers start on the Development channel automatically.
defaultChannel: 'Development',
// Production builds usually omit this so users attach to the Cloud Default channel.
},
},
};

接下来,构建您的 Web 应用程序并运行 npx cap sync 以将更新的配置文件复制到您的 iOS、Android 和 Electron 项目。如果您跳过此同步步骤,则您的本机项目将继续使用它们之前配置的频道。

Channels have several options that control who can receive updates and how updates are delivered. The most important ones are below. You can configure these from the web app, the CLI, or the Public API.

  • 默认频道:可选地标记新设备附加的频道或平台特定的频道。请参阅“默认频道行为”以了解路由场景。
  • 平台过滤器:启用或禁用向 iOS, Android,或 Electron 设备发送更新(每个频道)。
  • 在原生下禁用自动降级:防止在设备的原生应用版本新于频道的包装(例如,设备在1.2.3时,频道有1.2.2)时发送更新。
  • 允许开发构建:允许更新开发构建(用于测试)。
  • 允许模拟器设备:允许更新模拟器/模拟器(用于测试)。
  • 允许设备自我分配:让应用在运行时切换到此频道使用 setChannel。如果禁用,则 setChannel 将在此频道中失败。

禁用自动更新策略

标题:禁用自动更新策略

Use this to restrict which kinds of updates the channel will automatically deliver. Options:

  • major: 阻止目标包的主版本号高于设备本地基线的包(version_build). 例: 1.2.3 -> 2.0.0 是被阻止的; 1.2.3 -> 1.9.0 是允许的。
  • minor: 阻止目标包的主或次版本号与 version_build不同。 例: 1.2.3 -> 1.3.0 是被阻止的; 1.2.3 -> 1.2.4 是允许的。
  • patch: 最严格的模式。 阻止任何主、次或补丁号的变化。 只允许后缀变化而 MAJOR.MINOR.PATCH 保持不变。 例: 1.0.0-beta.1 -> 1.0.0-beta.2 是允许的, 1.0.0+build.1 -> 1.0.0+build.2 允许更新 1.0.0 -> 1.0.1 更新被阻止。
  • 元数据:每个捆绑包都需要最低版本的更新元数据。通过 CLI 配置 --min-update-version--auto-min-update-version如果缺失,通道将被标记为不配置,更新将被拒绝,直到设置。
  • none: 根据 这些策略将通道的目标捆绑包与发送的本机基线进行比较,而不是下载的当前捆绑包.

Learn more details and examples in Disable updates strategy at /docs/__CAPGO_KEEP_0__/commands/#disable-updates-strategy。 version_build示例(__CAPGO_KEEP_0__): version_name.

Learn more details and examples in Disable updates strategy at /docs/cli/commands/#disable-updates-strategy.

Learn more details and examples in Disable updates strategy at /docs/CLI/commands/#disable-updates-strategy.

Example (__CAPGO_KEEP_0__):
# Block major updates on the Production channel
npx @capgo/cli@latest channel set production com.example.app \
--disable-auto-update major
# Allow devices to self-assign to the Beta channel
npx @capgo/cli@latest channel set beta com.example.app --self-assign

从您的应用程序中使用setChannel()

标题:从您的应用程序中使用setChannel()

这个 setChannel() 方法允许您的应用程序在运行时程序性切换通道。这对于以下情况特别有用:

  • QA/调试菜单,测试人员可以在菜单中切换通道
  • Beta程序优选流程
  • 特性标志实现
  • A/B测试场景
import { CapacitorUpdater } from '@capgo/capacitor-updater';
// Switch to the beta channel
await CapacitorUpdater.setChannel({ channel: 'beta' });
// Optionally trigger an immediate update check after switching
await CapacitorUpdater.setChannel({
channel: 'beta',
triggerAutoUpdate: true
});

To deploy a live update, you need to upload a new JS bundle build and assign it to a channel. You can do this in one step with the Capgo CLI:

__CAPGO_KEEP_0__ __CAPGO_KEEP_1__
npx @capgo/cli@latest bundle upload --channel=Development

这将上传您的构建的Web资产并将新捆绑设置为活动的构建为该频道。任何配置为监听该频道的应用程序将在下一次检查更新时接收更新。 Development 您还可以从“捆绑包”部分的__CAPGO_KEEP_0__控制台Assign builds to channels。点击菜单图标旁边的构建并选择“Assign to Channel”以选择该构建的频道。

You can also assign builds to channels from the “Bundles” section of the Capgo dashboard. Click the menu icon next to a build and select “Assign to Channel” to choose the channel for that build.

It’s important to note that bundles in Capgo are global to your app, not specific to individual channels. The same bundle can be assigned to multiple channels.

语义版本控制与__CAPGO_KEEP_0__的Semver Tester semantic versioning with Capgo’s Semver Tester 这种方法有几个好处: 1.2.3-beta.1.

它清晰地表明了构建之间的关系。

  • Copy to clipboard 1.2.3-beta.1 __CAPGO_KEEP_0__ 1.2.3.
  • 它显然是一个预发布版本
  • 它允许在不同通道之间重用版本号,减少混淆 1.2.3它使回滚路径清晰。如果您需要从 1.2.2 您知道

这是之前的稳定版本

  • Development 以下是如何将您的捆绑版本与典型的通道设置对齐的示例: 1.2.3-dev.1, 1.2.3-dev.2通道:
  • QA 等等 1.2.3-qa.1, 1.2.3-qa.2通道:
  • Staging 等等 1.2.3-rc.1, 1.2.3-rc.2通道:
  • Production 频道: 1.2.3, 1.2.4, 等等

使用 带有预发布标识符的semver 是推荐的方法,但并非严格要求。关键是找到一个清晰地表达您构建之间关系的版本控制方案,并且与您的团队的开发流程保持一致。

回滚实时更新

标题:回滚实时更新

如果您部署了一个实时更新,引入了一个错误或需要回滚,请可以轻松地回滚到之前的构建。从仪表盘的“频道”部分:

  1. 点击您要回滚的频道名称
  2. 找到您要回滚到的构建并点击冠军图标 回滚构建
  3. 确认操作

The selected build will immediately become the active build for that channel again. Apps will receive the rolled back version the next time they check for an update.

对于更高级的工作流程,您可以将您的实时更新发布作为您的CI/CD管道的一部分自动化。通过将Capgo集成到您的构建过程中,您可以自动上传新包并将其分配到通道,任何时候您推送到特定分支或创建新发布时。

查看 CI/CD集成 文档以了解更多关于自动Capgo实时更新的信息。

现在您了解了通道的概念,准备好开始将实时更新发布到真实设备了。基本流程是:

  1. 在您的应用中安装Capgo SDK
  2. 配置应用以监听所需的通道
  3. 上传一个构建并将其分配到该频道
  4. 启动应用并等待更新!

详细的步骤请参见 实时更新部署 指南。更新愉快!

高级频道使用:用户分段

高级频道使用:用户分段

频道不仅可以用于开发阶段,还可以用于用户分段,支持以下功能:

  • 不同用户等级的功能标志
  • A/B测试
  • 逐步功能发布
  • 测试版计划

了解如何在我们的指南中实现这些高级用例: 如何根据计划和渠道对用户进行分段,用于特征标志和A/B测试.

如果您正在使用 渠道 来规划渠道路由和分阶段发布,连接它与 渠道 查看渠道的实现细节在 渠道 查看渠道的实现细节在 Beta测试解决方案 为 Beta 测试解决方案中的产品工作流 版本目标解决方案 为版本目标解决方案中的产品工作流,并 Capgo 环境最佳实践:使用一个移动应用 ID 进行分期 在 Capgo 环境最佳实践:使用一个移动应用 ID 进行分期 中的实际上下文