跳转至正文

一劳永逸

可自动更新的私有应用

只需通过 MDM 或内部商店安装一次原生应用。之后,Capgo 会在后台下载新的 web bundle,在你选择时应用,回滚启动失败的 bundle,并显示每台设备运行的版本。

渠道映射

Capgo 控制台中的渠道列表,用于管理私有应用的发布
渠道映射
示例:production、site-eu、site-us
发布规则
先在一个站点,然后推广到所有位置
更新检查
打开时检查,之后每 10 分钟一次
安装一次
通过 MDM、企业应用商店或设备配置流程分发已签名的原生 App。
后台静默更新
App 启动时会检查新 bundle,并在保持打开期间每 10 分钟检查一次,然后在后台下载。
支持离线工作
无网络连接的设备会继续运行现有 bundle,并在恢复联网后再次检查。

无需手动点击更新

Kiosk 终端、共享平板和现场设备通常全天只运行一个 App。用户不会打开应用商店去更新,IT 也不希望每修一个 Web 问题就推一个新包。Capgo 会自动保持 Web 层为最新,在 bundle 启动失败时回滚,并告诉你每台设备运行的是哪个版本。

原生安装
仅需一次,通过 MDM
更新检查
运行期间每 10 分钟一次
Bundle 启动失败
回滚

专为无需人工管理的设备打造

将 Capgo 用作 Web 资产的发布通道,而不是用来替代你的原生分发。原生二进制文件仍走你的企业打包流程。

离线运行
App 会从上次下载的 bundle 启动。无网络连接的设备会继续运行该 bundle,并在重新连接后再次检查更新。
更新行为文档
一次一个站点
为每个站点或团队分配独立的 channel。在一个站点验证 bundle 后,再把同一个 bundle 关联到其他 channel。
Channels 文档
从有问题的 bundle 中恢复
如果新 bundle 在 10 秒内未调用 notifyAppReady(),设备会将其标记为失败并回滚到上一个可用的 bundle。现场人员无需进行任何操作。
notifyAppReady() 与自动回滚
显示每台设备运行的版本
设备日志记录检查、下载、安装和失败情况。使用 setCustomId() 设置自定义 ID,将 Capgo 设备与您的资产列表匹配。
设备与自定义 ID

工作原理

IT 团队如何使用 Capgo 保持受管设备最新

配置一次应用,然后从 CI 发布并在控制台监控。以下每个命令和设置均出自 Capgo 文档。

  1. 使用默认通道安装一次应用

    defaultChannel 将来自此构建的所有设备置于正确的通道上,例如每个站点一个。autoUpdate: 'always' 会在 bundle 下载完成后立即应用,适合从不进入后台的 kiosk 应用。

    // capacitor.config.ts
    plugins: {
      CapacitorUpdater: {
        defaultChannel: 'site-eu',
        autoUpdate: 'always',
        autoSplashscreen: true,
      },
    },
    更新行为文档
  2. 启动时调用 notifyAppReady()

    这告知更新器新的 bundle 已加载。如果 bundle 未能到达,设备会自动回退到上一个正常工作的版本。

    import { CapacitorUpdater } from '@capgo/capacitor-updater'
    
    // once your app has loaded
    CapacitorUpdater.notifyAppReady()
    notifyAppReady() 与自动回滚
  3. 从 CI 发布,先发一个站点

    使用 --delta 上传,让设备只下载变更文件。第一个站点确认没问题后,把同一个 bundle 关联到其他 channel。

    npx @capgo/cli@latest bundle upload --channel site-eu --delta
    # after the first site checks out
    npx @capgo/cli@latest channel set site-us com.example.app \
      --bundle 1.4.2
    Channels 文档
  4. 集中监控设备并回滚

    设备 logs 会显示每次检查、下载、安装和失败。Observe (beta) 会按 bundle 版本对比启动和 WebView 耗时。要回滚站点,关联它之前的 bundle 即可。

    # roll site-eu back to the previous bundle
    npx @capgo/cli@latest channel set site-eu com.example.app \
      --bundle 1.4.1
    Observe

这是什么,不是什么

  • 适用于通过 MDM、Apple Business Manager、Android Enterprise 或内部企业商店进行的私有企业分发。
  • Capgo 更新 JavaScript、HTML、CSS 和资源。原生插件变更仍需要新的已签名原生包。
  • 离线设备会继续运行最后一次成功的 bundle,直到重新连接并获取下一个已批准的更新。
  • 这不是绕过消费者 App Store 的方式。这是为已经自行分发的团队提供的私有应用运营模式。

使用 Capacitor 构建的应用

账户类应用需要静默、自动的维护

电信和支持类应用包含计费、套餐、支持和设备工作流,这些流程必须保持最新,而无需用户为每个小改进安装新的二进制文件。

我的 Swisscom 应用图标 生产力

我的 Swisscom

账户类应用,支持、套餐和计费变更应静默发布。

Google Play 安装量
180万
应用商店评分
4.4
My Vodafone 应用图标 工具

我的 Vodafone

运营商自助服务应用,用户无需管理每次小更新。

Google Play 安装量
1110 万
应用商店评分
4.6
Técnico Virtual – 技术支持 App 图标 工具

虚拟技术员 – 技术支持

客服支持应用,诊断和帮助流程需要维护,但无需发版开销。

Google Play 安装量
10.3M
应用商店评分
4.3

客户证言

使用 Capgo 交付的团队怎么说

5.0/5 开发者团队评分 9,400+ 团队 查看评价

no-tone @ Webincode

开发者,Webincode

“能把特定 Device ID 加入指定分组,并只向这些分组推送更改,太救命了。”

Sergiu S 的肖像

Sergiu S

drivolino GmbH 首席开发者

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

Kapil

NuTriQ 创始人

“无需等待完整的 App Store 审核周期,就能即时推送生产环境的 OTA 更新,这为我们带来了巨大的运营优势。”

常见问题

来自管理设备团队的问题

适用于无人工手动更新的 Kiosk、MDM 和内部应用。

我们的 Kiosk 应用从不进入后台。它还会更新吗?

会的,只要将 autoUpdate 设置为 'always'。插件会在应用打开期间每 10 分钟检查一次(periodCheckDelay,最小 600 秒),并立即应用已下载的 bundle。如果使用默认的 'atBackground',bundle 会等待应用进入后台。即时应用还需要开启 autoSplashscreen 的 @capacitor/splash-screen。

更新行为文档

如果更新导致设备上的应用崩溃,会发生什么?

如果新 bundle 在 10 秒内未调用 notifyAppReady(),设备将回滚到之前正常工作的 bundle。您也可以将 channel 指回之前的 bundle,或强制使用内置 bundle,设备会在下次检查时获取。

回滚文档

我们能在下次更新检查之前推送修复吗?

配置好 Capgo Notifications 后,channel set --send-update-notification 会在您更改 channel 的 bundle 后发送静默更新检查通知。投递是尽力而为的,取决于操作系统、网络和设备状态。它无法触达离线或强制退出的应用。

静默更新检查

我们还需要 MDM 或内部应用商店吗?

是的,原生应用仍然需要。Capgo 会更新 JavaScript、HTML、CSS 和资源。新增插件、原生 code 以及 Capacitor 配置变更,仍需通过您的 MDM 或内部应用商店以新的签名包发布。

哪些场景需要 Native Build

更新流量可以留在我们自己的基础设施上吗?

Enterprise 方案提供专用、混合及授权的自托管部署方式。您也可以使用开源 updater 运行自己的更新服务器,但届时需要自行构建 channels 和统计等功能。

自托管更新文档

想让您的内部应用采用这种发布模式吗?

告诉我们您的设备是如何注册和连接的。我们可以针对您的设备群,一起梳理 channels、更新时机和回滚方案。