跳过主要内容
Capgo logo
生产更新

让每个用户都能使用最新修复

从 CLI 或 CI 上上传一个新的 Web 包,设备在后台下载并在下一次应用回到前台时运行。通过百分比进行发布,使用 Observe 进行监控,如果它出现问题,则回滚。

来自马丁的人性化支持

不需要信用卡
自动回滚
仅限 Web层更新

问题

生产环境更新的痛点

仅通过商店发布修复是一个缓慢的方式

1

传统的修复流程

找到问题

2

监控或支持报告显示屏幕已损坏。修复仅需几行JavaScript或CSS代码。

构建新二进制文件

3

您需要更新版本号,编译iOS和Android版本,并准备两个商店提交。

等待审核

4

商店审核通常需要24-48小时,有时甚至更长。被拒绝后,等待时间又开始了。

After approval, each user still has to install the new version. Until then, they run the old code.

经过批准后,每个用户仍需要安装新版本。直到那时,他们仍在运行旧版本__CAPGO_KEEP_0__。

为什么修复更新会慢慢到达用户

24–48小时+

商店更新的典型时间

苹果和谷歌会审查每个新二进制文件。审查通常需要24–48小时,有时更长,拒绝审查意味着需要重新提交。

每个用户

商店更新取决于每个设备

只有当用户或他们的自动更新设置安装更新时,商店更新才会到达设备。一些设备会长时间停留在旧版本中。

两家商店

每个修复需要两次提交

同一修复需要分别通过App Store和Google Play的审查和发布。

解决方案

如何让live update到达您的用户

这是Capgo的默认更新行为。无需更新提示、强制重启和提交web层更改。

Capgo默认更新流程

  1. 应用程序检查更新

    当应用程序进入前台时,且在它保持打开状态时每10分钟,更新程序会向Capgo询问最新的频道包。

    前台

  2. 它在后台下载

    新包在用户继续使用当前版本时下载。使用delta更新时,只下载更改的文件。

    无中断

  3. 它在下一次恢复时切换

    当用户离开应用程序时,更新程序安装包。下一次打开时,他们将运行新版本。

    下一次前台

需要用户在打开应用程序时立即看到新版本吗?直接更新模式在启动时应用它,splash屏幕显示时

查看最新更新

更新行为文档

如何工作

How production teams ship a fix with Capgo

一个已经上架的Capacitor应用的典型发布版本。以下所有命令来自CapgoCLI文档。

  1. 设置更新器一次

    运行设置向导,然后确保您的应用程序调用notifyAppReady()后启动。一个从未做出该呼吁的捆绑包会回滚

    npx @capgo/cli@latest init
    # in your app start-up code
    await CapacitorUpdater.notifyAppReady()
    notifyAppReady()文档
  2. 上传修复到生产切片

    使用--delta使设备只下载更改的文件,并使用--rollout以小比例开始。其他人仍在稳定捆绑包上

    npx @capgo/cli@latest bundle upload --channel production --delta --rollout 5
    渐进式发布文档
  3. 让Capgo停止坏的发布

    设置失败率阈值(500基点是5%)自动暂停。如果失败率超过阈值,Capgo会回滚更新。请在观察中查看新版本。

    npx @capgo/cli@latest channel set production \
      --auto-pause-enabled \
      --auto-pause-failure-rate-bps 500 \
      --auto-pause-action rollback
    观察文档
  4. 推广到所有人

    当数字看起来正确时,推广包到每台设备上。如果不正确,回滚更新分组到稳定版本。

    npx @capgo/cli@latest channel set production --rollout-promote
    # or, if something looks wrong
    npx @capgo/cli@latest channel set production --rollout-rollback
    回滚文档

为生产发布而设计

生产团队使用的控制生产发布的方式,通常不惊讧用户。

增量更新

使用 `--delta` 上传,设备只下载自上次更新以来变化的文件。较少变化的大资源只下载一次。

  • 对于使用慢速或计量网络的用户,下载体积更小
  • 在默认模式下,更新在会话之间应用,而不是在会话中间
增量更新文档

--delta

只下载变化的文件

渐进式发布,自动暂停

将一个随机、粘性共享的频道中的新包发送到稳定包的其他人,同时保持稳定包不变。提高百分比、推广或从CLI或控制台回滚。

  • 自动暂停可以在失败率超过阈值时暂停或回滚一个发布
  • 观察将新版本与之前的版本进行比较,然后才会提高曝光
渐进式发布文档

1–5%

发布流程的典型第一步

自动回滚

每个更新都必须证明它起作用。如果一个新包没有在时间内调用notifyAppReady(),设备就会返回到最后一个工作包,并将新包标记为失败

  • 回滚触发器如果notifyAppReady()在appReadyTimeout(默认10秒)内没有被调用
  • 将整个频道回滚到其历史中的任何较早的包
notifyAppReady()文档

10秒

自动回滚的默认appReadyTimeout

商店评论感知的交付

Capgo delivers the Capacitor web layer: JavaScript, CSS, and assets. It does not change the native binary, plugins, permissions, entitlements, or app-store metadata. Store review is app-specific, so you remain responsible for policy compliance and approval.

  • 在原生能力、插件、权限或应用商店元数据发生变化时,请使用原生商店发布
  • 保持评审者对应用的预期功能和网页层更新路径的注释清晰
  • 在每次提交之前,请查看当前的苹果和谷歌政策

生产团队如何使用它

日常发布工作一旦实时更新就位。每个卡片都链接到文档。

关键错误修复

一个破损的结帐或登录屏幕会得到网页层修复。上传它,设备在下一次更新检查时会接收到它。

更新行为文档

内容复制和更改

不需要重新构建二进制文件即可修复文字、更新帮助文本或替换图像和其他捆绑资产

原生兼容性文档

发布健康状况在观察

比较新捆绑包与之前的捆绑包:无问题率、启动和WebView时间以及每个版本的部署标记

观察文档

更新通知更快

更改频道捆绑包后发送静默更新通知,使设备立即检查,而不是在下一次前台时

发送更新通知

保护较旧的原生构建

阻止频道上的主要更新,使需要新原生code的捆绑包永远不会到达较旧的二进制文件

版本目标文档

从渠道历史中回滚

选择渠道历史中的任何一个较早的包,重新激活它,让所有设备都能使用该渠道。

回滚文档

已部署在生产环境的基础设施

Capgo自2021年以来一直为生产应用程序提供实时更新。

每月更新
10亿+
已覆盖的设备
90亿+
使用Capgo的应用
4.7万+
典型的API延迟
~50ms

使用Capacitor构建的应用

高流量应用需要在生产环境中可靠地更新UI

天气、公共卫生和电信应用依赖准确的界面、警报和导航。生产更新有助于在监测采用情况之前扩大审批的界面修复。

风暴.com - 天气预报应用图标 天气

Windy.com - 天气预报

该天气应用程序需要在地图、警报和导航修复方面进行谨慎的生产扩展。

Google Play 安装
32.9万
商店评分
4.7
Conecte SUS 应用程序图标 医疗

自动更新

该公共卫生应用程序需要快速可靠的更新来提供指导和服务信息。

Google Play 安装
2.77亿
应用商店评分
4.6
米橙应用图标 工具

米橙

电信账户应用,告警和账户面板频繁更改。

Google Play 安装
9300万
应用商店评分
4.2

客户证明

使用Capgo的团队说什么

5.0/5 开发者团队评级 9,400+ 团队 查看评论
Sergiu S

Sergiu S

主开发人员,drivolino GmbH

“Capgo Capacitor 更新器插件彻底改变了我们发布更新的方式。过去的几天现在只需要几分钟。”

Kapil

创始人,NuTriQ

“推送生产 OTA 更新可以立即无需等待完整 App Store 审核周期,带来巨大的运营优势.”

Michael Haberler

迈克尔·哈伯勒

5 分之 5

常见问题

生产团队常问的问题

更新如何到达设备,以及如何处理出现问题的更新。

用户何时会接收到更新?

用户何时会获得一个live update?

更新行为文档

FAQ

设备能否更快接收紧急修复?

是的。您更改一个频道的包后,通过控制台发送更新通知或添加--send-update-notification到包上传,设备会接收到静默推送并立即检查。这需要Capgo通知,包括iOS和Android推送凭据。交付是最佳努力:离线或强制退出的应用程序在下一次启动时检查。

发送更新通知

如果更新破坏了应用程序会发生什么?

如果一个新包在10秒内(默认appReadyTimeout)没有调用notifyAppReady(),设备会返回到最后一个工作包并标记新包为失败。对于不阻止应用程序启动的bug,可以回滚进展式发布或从频道历史中选择一个较早的包。

回滚文档

如何首先发布给少数用户?

使用--rollout上传以将包发送到一个随机、粘性频道的分数,同时其他人仍在稳定版本。提高百分比、推广或从CLI或控制台回滚。自动暂停可以在失败率超过阈值时停止暴露。

进展式发布文档

什么不能live update改变?

Live更新替换了Web层:JavaScript、HTML、CSS和资产。原生插件、Capacitor升级、capacitor.config更改和iOS或Android项目文件需要一个商店发布。Capgo在上传时检查包的原生兼容性,频道可以阻止更新到旧的二进制文件。

原生兼容性文档

将您的下一个修复作为 live update

在试用期间尝试完整流程:上传一个捆绑包,向几个设备推送它,然后回滚。

来自马丁的人性化支持

14天免费试用。无需信用卡。