FEMA
在内容微小错误可能引发紧急情况的场景下,提供应急指导。
- Google Play 安装量
- 160万
- 应用商店评分
- 4.0
默认情况下,live update 在下载后仅运行一个会话。而 Direct Update 模式会在启动时、在 Splash Screen 之后直接应用更新,确保用户看到的第一个界面就是新版本。
面临的问题
用户打开 App
App 使用现有的 bundle 启动。更新程序会检查新版本并在后台进行 download。
当前会话运行旧版本
在本次会话剩余的时间里,用户运行的是你在修复前安装的 code。
更新在下次恢复时生效
当用户退出 App 时,更新程序会安装新的 bundle。用户在下次打开 App 时才能看到更新。
对于大多数发布,这是合理的权衡。但如果你希望在 upload 后的第一个会话中就运行新的 code,请使用 direct update 模式。
在修复生效前,打开 App 的用户不应再次遇到故障界面。
你希望修复后的 JavaScript 从启动时就开始运行,而不是等到下次会话。
条款、通知或活动内容必须在用户看到的首屏上保持最新。
解决方案
更新器会在启动时检查,此时 Splash Screen 保持显示。如果有新 bundle,它会在 Splash Screen 隐藏前完成下载并应用。
无需等待启动。用户在下一次启动时即可看到更新。
用户在首屏即可看到新版本。下载期间,用户需在启动页等待。
工作原理
直接模式属于原生配置,因此需先通过应用商店构建版本。之后,每一次 live update 都会遵循此配置。相关命令请参考 Capgo 文档。
安装 @capacitor/splash-screen,然后在 capacitor.config.ts 中设置 autoUpdate、autoSplashscreen 和 launchAutoHide。
npm install @capacitor/splash-screen
npx cap sync
// capacitor.config.ts
plugins: {
CapacitorUpdater: {
autoUpdate: 'onLaunch', // or 'atInstall' / 'always'
autoSplashscreen: true,
keepUrlPathAfterReload: true,
},
SplashScreen: { launchAutoHide: false },
}
Splash screen 处理
capacitor.config 会被编译进 Native Build,因此新模式会随您的下一个 Store 版本发布到达用户手中。Capgo Build 可以在云端生成它。
npx @capgo/cli@latest build request --platform ios
npx @capgo/cli@latest build request --platform android
Capgo Build 文档
用户在启动时会等待下载,因此只需发送变更的文件。CLI 会检测即时应用模式并提示进行 Delta upload。
npx @capgo/cli@latest bundle upload --channel production --delta
Delta updates 文档
应用启动后调用 notifyAppReady()。如果新 Bundle 启动失败,设备将自动回滚到上一个可用的版本。
import { CapacitorUpdater } from '@capgo/capacitor-updater'
await CapacitorUpdater.notifyAppReady()
notifyAppReady() 文档
Direct updates 是一种权衡:通过在启动时进行短暂等待,换取在首屏即展示新版本。
在 capacitor.config.ts 中设置 autoUpdate。每种模式决定了用户等待时何时应用更新。
3
autoUpdate 中的即时应用模式
Direct 模式需要将 @capacitor/splash-screen 的 launchAutoHide 设置为 false,并将 autoSplashscreen 设置为 true。一旦更新应用完成,或者确认无需更新时,更新器会自动隐藏 splash screen。
自动管理 Splashscreen
每种 Direct 模式均需配置
用户在启动时等待下载,而通过始终更新,可以在应用使用过程中进行热重载。两者兼顾。
--delta
建议在每次 direct update upload 时使用
当当前会话必须运行新的 code 时,请使用 direct 模式。其他情况请保持默认。
支付、登录或数据相关的 Bug,无法容忍再使用一个会话的旧版 code。
atInstall 会在全新安装或应用商店更新后立即应用最新的 bundle,确保新用户直接进入当前的 onboarding 流程。
用户打开 App 时必须保持最新的活动页面、通知或服务条款。
应在启动时生效的 Web 层安全修复。若涉及 native code 的修复,仍需通过应用商店发布。
样式微调和小功能通常无需等待应用商店审核。默认模式会在下次启动会话时应用这些更改。
配合 always 模式,周期性检查(默认每 10 分钟一次)可以在 App 运行期间应用更新。请在依赖此功能前先保存应用状态。
启动时的等待时间由检查更新和下载组成。Delta updates 可确保仅下载发生变化的文件。
典型的 API 延迟
仅下载已更改的文件
每月下发的更新数
找到符合你团队需求的解决方案
使用 Capacitor 构建的应用
应急、医疗和政务类 App 无法忍受因修复损坏的清单、资源链接或特定位置通知而等待数日。通过 Direct updates,Web 层可以在修复方案获批后立即生效。
在内容微小错误可能引发紧急情况的场景下,提供应急指导。
在需要快速发布经审核的内容变更的健康记录与指导界面中使用。
在多设备环境下,需要版本安全的引导来保障公民身份认证流程。
NuTriQ 创始人
“无需等待完整的 App Store 审核周期,就能即时推送生产环境的 OTA 更新,这是巨大的运营优势。”
drivolino GmbH 首席开发者
“Capgo Capacitor Updater plugin 彻底改变了我们发布更新的方式。过去要花几天,现在只要几分钟。”
谁付费,Anirol
“自从开始使用 Capgo,一切都变快了,我也能在不耽误日常生活的情况下,把应得的时间留给用户。”
常见问题
何时使用、如何配置,以及上线时的费用。
大多数发布使用默认模式:启动时无需等待,用户会在下一个会话拿到更新。如果上传后开始的会话必须运行新的 code,例如结账流程故障或 Web 层安全修复,就用 Direct 模式。
更新行为文档atInstall 仅在原生应用全新安装或商店更新后立即应用更新,之后与默认模式一致。onLaunch 在应用从被杀死状态启动时立即应用。always 会在每次进入前台时检查,并在下载完成后立即应用,即使用户正在使用应用。
Updater 设置Direct 模式会在用户等待时应用更新。如果没有 @capacitor/splash-screen、autoSplashscreen: true 和 launchAutoHide: false,用户在重新加载前可能会看到闪烁或旧的 UI。有了这些配置,Splash Screen 会一直显示,直到更新已应用,或 Updater 确认无需更新。
Splash Screen 处理不再使用 autoUpdate,而是通过 capacitor.config 进行配置,该配置会在构建时读取到原生应用中。请在应用商店发布新版本以包含此设置。之后,每次 live update 都会遵循新的模式。
Native 兼容性文档directUpdate 已弃用,但仍会被检测到。其值与 atInstall、onLaunch 和 always 等 autoUpdate 模式相匹配。请在下次 Native Build 发布时将设置迁移至 autoUpdate。
Updater 设置在试用期间,可以在测试构建中尝试 direct update 模式,并亲自测试您应用的启动等待时间。
体验 Capgo direct updates:在启动时于 Splash Screen 后静默应用 Live Update。
来自 Martin 的人工支持
14 天无限免费试用。无需信用卡。 14 天退款保证。可随时取消。
14 天免费试用。无需信用卡。