跳过内容

回滚

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

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

自动回滚保护

频道

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

如何自动回滚工作

标题:如何自动回滚工作

当下载并应用新更新时,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
}
}
}

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

回滚到之前的捆绑包

回滚到之前的捆绑包

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

回滚UI界面

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

使用历史标签回滚:

  1. 登录到 Capgo控制台.

  2. 导航到“频道”部分。

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

  4. 前往频道视图的第 4 个标签(历史记录)

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

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

  7. 确认您要回滚到此构建

备选方法:使用皇冠图标

备选方法:使用皇冠图标

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

  1. 在频道视图的第一个标签中找到您要回滚到的构建
  2. 点击该构建旁边的皇冠图标以将其设置为频道的活动构建 频道管理选项
  3. 确认您要回滚到此构建

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

加速关键回滚通知

加速关键回滚通知

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

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

要设置此路径,请遵循 通知:启用静默更新检查.

解除频道绑定

解除频道绑定

如果您想暂时停止频道的更新以调查问题,可以解除频道与其当前构建的绑定。

要解除一个频道的绑定:

  1. 在Capgo控制台中,导航到该频道。

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

  3. 确认您要解除该频道的绑定。

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

如果您已经确定了一个更新的问题,但尚未确定要回滚到哪个构建,解除频道的绑定是很有用的。这样您可以在调查期间避免推送进一步的更新。

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

要在频道上强制内置包:

  1. 在Capgo控制台中,导航到该频道。

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

  3. 确认您是否要强制使用内置包。

当您强制使用内置包时,所有已配置为该频道的设备在下一次更新检查时将回滚到原始打包的Web构建。这不论他们当前的构建是什么都发生。

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

监控和应对问题

标题:监控和应对问题

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

一些策略包括:

对于仍然限于小组的发布,使用 渐进式发布 为了暂停暴露或清除目标之前更改整个频道的稳定包。

  • 立即在发布更新后监控崩溃报告和用户反馈。
  • 使用分阶段发布或分阶段频道系统在较小的用户群上测试更新,然后进行大规模发布。
  • 明确决定何时回滚、解除关联或强制使用内置包,以及谁有权这样做。
  • 如果适当,向用户说明问题和解决方案。

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

继续从回滚中

标题:继续从回滚中

如果您正在使用 回滚 来规划回滚和版本控制,连接它到 版本目标管理 为 __CAPGO_KEEP_0__ Live Updates 的实现细节 更新行为 为 __CAPGO_KEEP_0__ Live Updates 的实现细节 捆绑包 为捆绑包的实现细节 Capgo Live Updates for the product workflow in Capgo Live Updates, and 为 Capacitor Live Updates 的产品工作流程 for the practical context in Rollback Strategies for Capacitor Live Updates.