汉堡王®
包含优惠券、门店查找内容和活动展示位的餐饮应用。
- Google Play 安装量
- 1430万
- 应用商店评分
- 3.9
促销上线时,通过 CI 上传订餐 App 的 Web 层。利用 channels 按市场或品牌进行路由,先进行试点测试,若订餐流程出现问题可随时回滚。
为什么餐饮团队要加一条 live update 通道
限时活动在特定日期上线。但在上线当天早上,QA 却发现 App 菜单中根本没有显示该项。
修复方案本应在 Web 层完成,但由于必须通过应用商店发布,这意味着需要重新构建二进制文件并等待审核,这通常需要 24–48 小时,有时甚至更久。
即使审核通过,用户仍需手动安装更新,而门店内的自助终端(Kiosk)也需要独立的更新路径。
限时优惠应随营销活动同步开启。Web 层的修复不应受限于应用商店的发布周期。
在同一套 codebase 下,每个品牌的 App 和每个市场可能都需要不同的菜单、促销内容及法律文本。
新的下单流程在全面推行前,应先在单个市场或少量测试设备上运行。
午高峰时如果下单页面崩溃,需要一种不依赖应用商店发布的快速回滚机制。
使用场景
在 Web 层修复订单和结账界面,无需重新发布二进制文件即可更新菜单展示。
更新奖励界面、积分显示和兑换流程。来自后端的积分数值也会随之更新。
在 Web 层更新门店信息界面、自取指南以及路边取餐选项。
按计划上线促销 Banner、优惠页和活动入口。可以先在单一渠道进行试点。
自助终端应用可全天保持运行。可在定期检查或终端返回待机界面时应用更新。
将所有品牌 App 统一在同一个 Capgo 组织下,每个 App 拥有独立的 App ID、channels 和发布历史。
Capgo 为餐饮团队带来的价值
Capgo 没有预设的发布调度器。由你的 CI 触发 upload:可以在 merge 时、手动运行时,或根据你为发布设置的 cron 定时任务触发。
# .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 和发布历史。通过一个组织进行统一管理,并为每位团队成员分配相应角色。
为每个市场、地区或试点小组创建 Channel。App 可通过 setChannel() 加入允许自选的 Channel,您的团队还可以通过设备覆盖(override)来固定特定设备。
// 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 进入后台时应用更新,但自助终端很少进入后台。您可以自动下载更新,并在终端闲置时应用它们。
工作原理
一个典型的促销流程,从单一市场开始。以下所有命令均来自 Capgo CLI 文档。
允许自动分配,以便 App 可以加入用户或自助终端所在的市场 Channel。
npx @capgo/cli@latest channel add market-uk --self-assign
Channels 文档
在发布时通过 CI 运行此操作。灰度发布会将 bundle 发送到该 Channel 的部分设备,而其余设备保持在稳定版本。
npx @capgo/cli@latest bundle upload --channel market-uk --delta --rollout 10
渐进式发布文档
当下单流程符合预期时,将 bundle 推送到该 channel 上的所有设备。
npx @capgo/cli@latest channel set market-uk --rollout-promote
渐进式发布文档
如果下单功能出现故障,可将发布版本回退至稳定版,或在控制台的 channel history 中选择之前的 bundle。
npx @capgo/cli@latest channel set market-uk --rollout-rollback
回滚文档
使用 Capacitor 构建的应用
快餐应用无需等待应用商店审核,即可更新促销信息、门店查找内容、点餐通知和区域活动入口。
包含优惠券、门店查找内容和活动展示位的餐饮应用。
菜单、奖励和结账引导都可能快速变化的点餐应用。
需要频繁优化会员忠诚度和点餐流程的餐厅应用。
NuTriQ 创始人
“无需等待 App Store 漫长的审核周期,就能即时推送生产环境的 OTA 更新,这为我们的运营带来了巨大的优势。”
drivolino GmbH 首席开发者
“Capgo Capacitor Updater 插件彻底改变了我们的更新发布方式。过去需要几天的工作,现在只需几分钟。”
开发者,Webincode
“能把特定 Device ID 加入指定分组,并只向这些分组推送更改,太救命了。”
常见问题
时机、自助点餐机、市场,以及 live update 能带来的改变。
Capgo 没有发布调度器。您可以在选定的时间从 CI 触发上传,例如用定时运行的 GitHub Actions workflow,或在上线当天早上手动运行。如果新 UI 必须到某个日期才显示,就在 App 或后端加开关控制。
GitHub Actions 指南在默认模式下,更新会在 App 进入后台时应用,但自助终端很少进入后台。您可以将 autoUpdate 设置为 'always',以便在定期检查(默认每 10 分钟一次)期间应用更新;或者将其设置为 'onlyDownload',并在自助终端返回闲置屏幕时调用 set()。
更新行为文档可以。在 Capgo 中为每个品牌分配独立的 App ID,并为每个市场或试点小组分配独立的 channel。在允许自主分配的情况下,设备可以通过 setChannel() 加入 channel,或者通过设备覆盖(device override)进行加入。
Channels 文档您可以回滚渐进式发布,或从 channel 历史记录中选择之前的 bundle。如果新 bundle 启动失败且从未调用 notifyAppReady(),设备会自动返回到上一个可用的 bundle。
回滚文档价格通常来自您的后端或 POS 集成,因此请在那里进行更改。live update 负责更改显示菜单和价格的 Web 界面。而 Native plugins、支付 SDK 以及 Capacitor 升级则需要通过应用商店发布。
Native 兼容性文档在试用期间,即可为您的应用配置市场渠道和 CI upload。
将 Capgo live updates 推送到各个市场,若下单流程出错可随时回滚。
来自 Martin 的人工支持
14 天无限免费试用。无需信用卡 14 天退款保证。随时取消。
有企业级需求? 联系我们的团队