跳转到正文

从 V3 升级到 V4

在与 Discord 社区的开发者们深入交流后,我发现之前的手动模式过于繁琐且不够安全。例如,它无法实现自动回滚(auto-revert),如果手动更新失败,用户必须卸载并重新安装 App,这种用户体验(UX)非常糟糕。

与此同时,我决定借此机会为大家提供更大的自由度,并移除我之前设计的所有糟糕的 code。

npm i @capgo/capacitor-updater@4

如果你的 App 使用的是基础示例代码,那么可以放心迁移到新版本,尽情体验吧!

对你而言,操作依然简单,变更如下:

  • 配置项名称从 autoUpdateUrl 中的 updateUrl
  • Endpoint 方法已从 GET 变更为 POST

这对你来说是最重大的变化,但也是最棒的!你将获得大量改进,请仔细阅读。

  • autoUpdateUrl 会变为 updateUrl 因为该设置现在也可以在 manual 模式下使用了
  • 删除 cancelDelay 以及 delayUpdate 改为使用 setDelay
  • 不再有 versionName 在集合中
  • 变更 version 键,此前大多数函数都会将其作为对象返回 BundleInfo
interface BundleInfo {
id: string;
version: string;
downloaded: string;
status: 'success' | 'error' | 'pending' | 'downloading'
}
  • 重命名了容易引起误解的名称(虽然解释起来可能不够直观,但实际使用时新名称更容易理解):
    • 原先被称为 version 现在指代 bundle
    • id 指代旧版的 version 原先是一个 10 字符的随机字符串,而这个 id 是访问您的 bundles 唯一可靠且唯一的方式,例如 7Dfcd2RedN.
    • version 现在请参考 versionName 你为 bundle 选择的类型,例如 1.0.0
  • updateUrl 从...迁移到 get 改为 post,由于自定义 header 给部分用户带来了问题,而且 POST 更合理,所有之前的 header 都移到 body 并加前缀 cap_ 消失。
  • versionName 方法已被删除,改用 getId
  • list 现在返回一组 BundleInfo
  • 重命名 getId 中的 getDeviceId
  • autoUpdate 默认会变为 true,如果你使用 Manual 模式,请将其设为 false。
  • 方法 getLatest,此方法允许您从设置了 updateUrl 的最新可用版本中获取。
  • 方法 setDelay 他们会采取 {种: “background” | “kill” | “nativeVersion” | “date”,值? : string} 作为参数,为不同模式设置延迟。
  • 方法 next,以便在下次进入后台时设置版本,与 set 立即执行的方式相反。
  • 方法 isAutoUpdateEnabled,以便告知您是否处于 auto-update 上下文中
  • 事件 downloadComplete 当下载进度达到 100% 时
  • 新增必填字段 version 在 download 方法中
  • notifyAppReady 在 manual 模式下也变为必填,否则若 10 秒内未调用,应用将回滚至旧版本。

@lincolnthree 非常感谢您发起这项工作,没有您的帮助,这次更新根本无法实现。

如果你正在使用 从 V3 升级到 V4 要规划 live update 的交付,请将其与 Capgo Live Updates 用于 Capgo Live Updates 中的产品工作流, 概览 用于 Overview 中的实现细节, 功能 用于 Features 中的实现细节, 更新行为 有关 Update Behavior 中的实现细节,请参阅 更新类型 关于 Update Types 中的实现细节。