跳转至正文
适用于快餐行业 (QSR)

在发布当天即时更新菜单与促销内容

促销上线时,通过 CI 上传订餐 App 的 Web 层。利用 channels 按市场或品牌进行路由,先进行试点测试,若订餐流程出现问题可随时回滚。

为什么餐饮团队要加一条 live update 通道

菜单和促销的更新速度比应用商店发版更快

只走应用商店发布,上线当天就出 Bug

限时活动在特定日期上线。但在上线当天早上,QA 却发现 App 菜单中根本没有显示该项。

修复方案本应在 Web 层完成,但由于必须通过应用商店发布,这意味着需要重新构建二进制文件并等待审核,这通常需要 24–48 小时,有时甚至更久。

即使审核通过,用户仍需手动安装更新,而门店内的自助终端(Kiosk)也需要独立的更新路径。

促销活动有固定的日期

限时优惠应随营销活动同步开启。Web 层的修复不应受限于应用商店的发布周期。

多品牌与多市场运营

在同一套 codebase 下,每个品牌的 App 和每个市场可能都需要不同的菜单、促销内容及法律文本。

变更需要先进行试点

新的下单流程在全面推行前,应先在单个市场或少量测试设备上运行。

高峰时段容不得半点差错

午高峰时如果下单页面崩溃,需要一种不依赖应用商店发布的快速回滚机制。

使用场景

餐饮应用如何使用 Live Update

点餐与结账

在 Web 层修复订单和结账界面,无需重新发布二进制文件即可更新菜单展示。

会员与奖励

更新奖励界面、积分显示和兑换流程。来自后端的积分数值也会随之更新。

门店查询与自取

在 Web 层更新门店信息界面、自取指南以及路边取餐选项。

促销活动

按计划上线促销 Banner、优惠页和活动入口。可以先在单一渠道进行试点。

店内自助终端

自助终端应用可全天保持运行。可在定期检查或终端返回待机界面时应用更新。

多品牌应用

将所有品牌 App 统一在同一个 Capgo 组织下,每个 App 拥有独立的 App ID、channels 和发布历史。

Capgo 为餐饮团队带来的价值

按市场和品牌需求,自主掌控发布节奏

随时通过 CI 进行 upload

Capgo 没有预设的发布调度器。由你的 CI 触发 upload:可以在 merge 时、手动运行时,或根据你为发布设置的 cron 定时任务触发。

  • GitHub Actions、GitLab CI、Bitbucket 和 Azure DevOps 指南
  • 将 Capgo API key 保存在 CI secrets 中
  • 如果发布出现问题,可通过控制台或 CLI 进行回滚
# .github/workflows/capgo-launch.yml
on:
  workflow_dispatch:
  schedule:
    - cron: '0 6 15 11 *' # 06:00 UTC on 15 Nov, your launch time

jobs:
  upload:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - run: npm ci && npm run build
      - run: npx @capgo/cli@latest bundle upload --channel production --delta
        env:
          CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}
# one app ID per brand, same web codebase
npx @capgo/cli@latest bundle upload com.yourgroup.brand-a --channel production
npx @capgo/cli@latest bundle upload com.yourgroup.brand-b --channel production

通过单个账号管理多个品牌

每个品牌 App 在 Capgo 中都是独立的 App,拥有各自的 channels 和发布历史。通过一个组织进行统一管理,并为每位团队成员分配相应角色。

  • 一个组织即可管理所有品牌 App
  • 按 App ID 隔离 Channel 与历史记录
  • 支持组织、App 及 Channel 级别的权限角色

面向市场与试点小组的 Channel

为每个市场、地区或试点小组创建 Channel。App 可通过 setChannel() 加入允许自选的 Channel,您的团队还可以通过设备覆盖(override)来固定特定设备。

  • 面向市场、地区或试点门店的 Channel
  • 通过 setChannel() 或设备覆盖加入
  • 在每个 Channel 内进行渐进式发布
// in the app, after the user or kiosk picks a market
import { CapacitorUpdater } from '@capgo/capacitor-updater'

await CapacitorUpdater.setChannel({ channel: 'market-uk' })
自助终端更新
// capacitor.config.ts
CapacitorUpdater: { autoUpdate: 'onlyDownload' }

// kiosk app
let next
CapacitorUpdater.addListener('updateAvailable', ({ bundle }) => {
  next = bundle
})

// when the kiosk is back on its idle screen
if (next) await CapacitorUpdater.set({ id: next.id })

全天候运行的自助终端

默认模式会在 App 进入后台时应用更新,但自助终端很少进入后台。您可以自动下载更新,并在终端闲置时应用它们。

  • 当 bundle 就绪时,onlyDownload 模式会触发 updateAvailable
  • 在闲置屏幕上调用 set() 即可应用更新
  • Android kiosk mode 插件,将设备锁定在您的 App 中
每月交付的更新量
10亿+
典型的 API 延迟
~50ms
覆盖设备数
90M+
正在使用 Capgo 的 App
4.7K+

工作原理

餐厅团队如何通过 Capgo 发布菜单变更

一个典型的促销流程,从单一市场开始。以下所有命令均来自 Capgo CLI 文档。

  1. 为每个市场或试点项目创建 Channel

    允许自动分配,以便 App 可以加入用户或自助终端所在的市场 Channel。

    npx @capgo/cli@latest channel add market-uk --self-assign
    Channels 文档
  2. 将促销内容上传至部分市场

    在发布时通过 CI 运行此操作。灰度发布会将 bundle 发送到该 Channel 的部分设备,而其余设备保持在稳定版本。

    npx @capgo/cli@latest bundle upload --channel market-uk --delta --rollout 10
    渐进式发布文档
  3. 订单运行顺畅时进行推广

    当下单流程符合预期时,将 bundle 推送到该 channel 上的所有设备。

    npx @capgo/cli@latest channel set market-uk --rollout-promote
    渐进式发布文档
  4. 高峰期快速回滚

    如果下单功能出现故障,可将发布版本回退至稳定版,或在控制台的 channel history 中选择之前的 bundle。

    npx @capgo/cli@latest channel set market-uk --rollout-rollback
    回滚文档

使用 Capacitor 构建的应用

餐饮应用不断更新菜单和活动

快餐应用无需等待应用商店审核,即可更新促销信息、门店查找内容、点餐通知和区域活动入口。

BURGER KING® 应用图标 应用

汉堡王®

包含优惠券、门店查找内容和活动展示位的餐饮应用。

Google Play 安装量
1430万
应用商店评分
3.9
Jack in the Box® - Order Food 应用图标 美食佳饮

Jack in the Box® - 点餐

菜单、奖励和结账引导都可能快速变化的点餐应用。

Google Play 安装量
270万
应用商店评分
2.5
Denny's 应用图标 餐饮行业

Denny's

需要频繁优化会员忠诚度和点餐流程的餐厅应用。

Google Play 安装量
170万
应用商店评分
4.7

客户证言

使用 Capgo 交付的团队怎么说

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

Kapil

NuTriQ 创始人

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

Sergiu S 的肖像

Sergiu S

drivolino GmbH 首席开发者

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

no-tone @ Webincode

开发者,Webincode

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

常见问题

餐厅团队常问的问题

时机、自助点餐机、市场,以及 live update 能带来的改变。

可以预约菜单上线时间吗?

Capgo 没有发布调度器。您可以在选定的时间从 CI 触发上传,例如用定时运行的 GitHub Actions workflow,或在上线当天早上手动运行。如果新 UI 必须到某个日期才显示,就在 App 或后端加开关控制。

GitHub Actions 指南

如果 App 从不关闭,自助终端如何获取更新?

在默认模式下,更新会在 App 进入后台时应用,但自助终端很少进入后台。您可以将 autoUpdate 设置为 'always',以便在定期检查(默认每 10 分钟一次)期间应用更新;或者将其设置为 'onlyDownload',并在自助终端返回闲置屏幕时调用 set()。

更新行为文档

每个市场或品牌可以运行不同的版本吗?

可以。在 Capgo 中为每个品牌分配独立的 App ID,并为每个市场或试点小组分配独立的 channel。在允许自主分配的情况下,设备可以通过 setChannel() 加入 channel,或者通过设备覆盖(device override)进行加入。

Channels 文档

如果促销发布导致下单功能故障怎么办?

您可以回滚渐进式发布,或从 channel 历史记录中选择之前的 bundle。如果新 bundle 启动失败且从未调用 notifyAppReady(),设备会自动返回到上一个可用的 bundle。

回滚文档

live update 可以更改菜单价格吗?

价格通常来自您的后端或 POS 集成,因此请在那里进行更改。live update 负责更改显示菜单和价格的 Web 界面。而 Native plugins、支付 SDK 以及 Capacitor 升级则需要通过应用商店发布。

Native 兼容性文档

准备好按自己的节奏发布应用了吗?

在试用期间,即可为您的应用配置市场渠道和 CI upload。