跳过内容

回滚

虽然Capgo的实时更新使您能够快速向用户提供改进和修复,但在某些情况下,您可能需要回滚到应用程序的以前版本。也许新更新引入了一个意想不到的关键问题,或者您想在修复期间恢复特定更改。

Capgo提供了多种方式来管理频道的构建和控制用户接收的应用程序版本,包括手动回滚选项和自动安全机制。

自动回滚保护

自动回滚保护部分

Capgo内置了一个安全机制来保护用户免受更新中的错误。 notifyAppReady() 如果在方法被调用之前发生JavaScript错误,插件将自动回滚到以前的工作版本。

自动回滚工作原理

自动回滚工作原理部分

当下载并应用新更新时,Capgo期望您的应用程序调用 notifyAppReady() 在一个可配置的时间框架内确认更新已成功加载。这一方法表明:

  • JavaScript 包裹没有出现严重错误
  • 您的应用程序的核心功能正在工作
  • 更新是安全的

如果 notifyAppReady() 由于 JavaScript 崩溃或严重错误未被调用,Capgo 将:

  1. 检测到更新未能正确初始化
  2. 自动切换回上一个工作的包裹
  3. 标记问题的更新为失败以防止它再次被应用
import { CapacitorUpdater } from '@capgo/capacitor-updater'
// Call this after your app has successfully initialized
await CapacitorUpdater.notifyAppReady()

这项自动保护可以确保即使您意外推送了一个错误的更新,用户也不会被困在一个不可用的应用程序中。

您可以配置 Capgo 等待多长时间 notifyAppReady() 被调用,通过设置 appReadyTimeout 在您的 Capacitor 配置中:

{
"plugins": {
"CapacitorUpdater": {
"appReadyTimeout": 10000
}
}
}

超时 appReadyTimeout 值以毫秒为单位指定。 默认超时通常为 10 秒,但您可以根据应用程序初始化的需求进行调整。如果您的应用程序由于复杂的初始化过程而加载时间较长,您可能需要增加此值。

回滚到之前的捆绑包

《回滚到上一个捆绑包》

每次您上传一个新构建并将其分配到一个频道时,Capgo都会保存这些构建的历史记录。如果您需要回滚一个特定的更新,可以选择其中一个以前的构建并重新部署到频道中。

回滚UI界面

回滚的主要方式是通过回滚界面,回滚界面位于Capgo控制台的第4个标签(历史记录)中。当查看频道时,回滚界面提供了所有可用构建的全面视图,使您可以轻松选择并回滚到任何以前的版本。

使用历史记录标签回滚:

  1. 登录到 Capgo控制台.

  2. 导航到“频道”部分

  3. 点击您要回滚的频道的名称

  4. 在频道视图中,转到第4个标签(历史记录)

  5. 在构建历史记录中找到您要回滚的构建

  6. 选择该构建以将其设置为频道的活动构建

  7. 确认您想回滚到这个版本。

使用皇冠图标的另一种方法

使用皇冠图标的另一种方法

作为第二种方式,您也可以直接从第一个选项卡中回滚,点击频道的构建历史中任何构建旁边的皇冠图标:

  1. 在频道视图的第一个选项卡中,找到您想回滚到的构建。
  2. 点击构建旁边的皇冠图标,将其设置为频道的活动构建。 频道管理选项
  3. 确认您想回滚到这个版本。

回滚后,配置为监听更新频道的设备将在下一次检查更新时接收到之前的版本。回滚的版本将被视为新更新,因此将应用通常的更新流程和条件。

加速一个关键回滚通知(私有预览)

标题:加速一个关键回滚通知(私有预览)

重定向一个通道通常在设备下一次检查更新时生效。 Capgo 通知集成目前处于私有预览状态,可以在应用程序处于后台时发送一条静默的更新检查通知。启用更新集成后,应用程序可以根据其配置的更新模式检查、下载并安装回滚。

这不是一个强制性fleet命令,而是一个加速路径。交付依赖于操作系统的后台调度、网络可用性和设备状态,仍然是最佳努力。它无法更新一个离线或强制退出的应用程序,因此无法保证在每个设备上达到固定的时间。

要请求私有预览访问或设置此关键路径,请联系 support@capgo.app您也可以阅读 通知:启用静默更新检查.

解除绑定一个通道

标题:解除绑定一个通道

如果您想暂时停止一个通道的更新以便调查一个问题,您可以解除该通道与其当前版本的绑定。

要解除一个通道的绑定:

  1. 进入Capgo控制台的频道。

  2. 单击当前构建旁边的“解绑”按钮。

  3. 确认您要解绑频道。

一旦频道解绑,它将不会分发任何新更新。已配置为该频道的设备将保持在其当前构建状态,直到频道再次链接到构建。

如果您已识别更新中的问题,但尚未确定要回滚到的构建版本,此功能非常有用。解绑频道可以让您有时间调查而不推送进一步的更新。

在更严重的情况下,您可能希望将频道中的所有设备重置为与您的原生二进制文件一起打包的Web构建。这被称为“内置包”。

要在频道上强制内置包:

  1. 进入Capgo控制台的频道。

  2. 单击“内置包”按钮。

  3. 确认您要强制内置包。

当您强制使用内置捆绑包时,所有已配置到该频道的设备将在下一次更新检查时恢复到原始打包的Web构建。这将发生在它们当前的构建无论如何都不会影响到。

这是一个比回滚到特定之前的构建更激进的选项,因为它丢弃了所有自上次发布应用到应用商店以来发布的实时更新。

监控和应对问题

标题:监控和应对问题

为了快速捕捉问题并最小化有问题的更新的影响,监控您的发布并应对问题的计划非常重要。

一些策略包括:

对于仍然限制在一小群人中的发布,使用 渐进式发布 来暂停暴露或清除其目标之前更改整个频道的稳定捆绑包。

  • 立即在发布更新后监控崩溃报告和用户反馈
  • 使用分阶段的发布或分阶段渠道系统来在较小的用户群中测试更新
  • 明确决定何时回滚、解除链接或强制内置捆绑包,以及谁有权这样做
  • 向用户说明问题和解决方案(如果适用)

通过结合监控和快速管理问题更新的能力,您可以提供一个不断改进的应用体验,同时最小化对用户的干扰

从回滚中继续

标题:从回滚中继续

如果您正在使用 回滚 来规划回滚和版本控制,连接它与 版本目标 以获取版本目标的实施细节 Update Behavior for the implementation detail in Update Behavior, bundle for the implementation detail in bundle, Capgo Live Updates for the product workflow in Capgo Live Updates, and Rollback Strategies for Capacitor Live Updates for the practical context in Rollback Strategies for Capacitor Live Updates.