# @capawesome/cordova-live-update 中文文档

规范地址：https://npmcn.com/package/%40capawesome/cordova-live-update/

版本：0\.1\.1
npm 元数据更新时间：2026-11-12T08:13:18.858Z
中文译文更新时间：2026-11-12T08:19:52.597Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40capawesome/cordova-live-update
原文对照：https://npmcn.com/package/%40capawesome/cordova-live-update/?lang=original
项目主页：https://capawesome.io/cloud/live-updates/
源码仓库：https://github.com/capawesome-team/cordova-live-update

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：394 kB，104 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2026-06-02T15:47:21.077Z
- 最新版本发布：2026-11-12T08:13:18.453Z
- 近 30 天下载量：3170（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 3 个）

## 中文简介

Cordova 插件可以实时远程更新您的应用程序 .

## 安装

```sh
npm install @capawesome/cordova-live-update
```

也可以使用：`pnpm add @capawesome/cordova-live-update`、`yarn add @capawesome/cordova-live-update`、`bun add @capawesome/cordova-live-update`

## README

# Cordova 现场更新插件

Cordova插件允许您在不要求用户从应用商店下载新版本的情况下,远程实时更新您的应用,也称为Over-the-Air(OTA)更新.

[![Deliver Live Updates to your Capacitor app with Capawesome Cloud](https://cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.png?t=1)](https://cloud.capawesome.io/)

## 特征

-   ++ 支持 **Android 和 iOS 软件**
-   与 **库克多瓦网络视频** -对 **没有** 需求 `cordova-plugin-ionic-webview`
-   📦 **套装管理** ——下载、设置和删除捆绑
-   ☁️ **云支持** ——通过 [云雾](https://cloud.capawesome.io/)
-   📺 **频道支持** ——为应用程序设置管理不同版本的频道
-   🔄 **自动更新** - 15分钟节流阀的背景更新战略
-   🛟 **回滚** ——在失败的更新中自动返回默认捆绑
-   🔁 **Delta 更新** — 显示模式下载只更改文件
-   ⚙️ **运行时配置** ——运行时更新插件配置
-   📡 **更新生命周期事件** ——跟踪下载进度,对捆绑变化作出反应,检测再装入
-   🏷️ **自定义属性** – 通过 Capwesome Cloud 连接自定义密钥值元数据与捆绑
-   🔒 **警卫** ——通过RSA签名验证捆绑物的真实性和完整性
-   🌐 **开源** 麻省理工学院获得执照

## 通讯

随时更新有关卡帕韦索姆、Capacitor和Ionic生态系统的最新消息和最新消息,因为我们 [《卡帕索克通讯》](https://cloud.capawesome.io/newsletter/)。 。 。 .

## 兼容性

| 插件版本 | Cordova Android 版本软件 | Cordova iOS 版本 | 状态 |
| --- | --- | --- | --- |
| 0.1.x (中文(简体) ) | \>=13.0.0 | 页:1 | 积极支持 |

## 网络视频兼容性

此插件将服务的文件互换到WebView, 将它连接到 Cordova 的官方插件扩展点(`CordovaPluginPathHandler` 在安卓上, `CDVPluginSchemeHandler` (原始内容存档于2018-09-28). On iOS. 这些钩子只有在WebView通过自定义方案加载内容时才会起火,即: **默认** 为现代科多瓦语:

-   **机器人** (cordova-android ~10):载荷来自 `https://localhost/` 通过 `WebViewAssetLoader`。 。 。 .
-   **iOS系统** (cordova-ios 7):载荷来自 `app://localhost/` 通过 `WKURLSchemeHandler`。 。 。 .

插件确实如此 **没有** 如果您的应用程序强制 WebView 返回到遗产中 `file://` 计划,例如:

-   `<preference name="AndroidInsecureFileModeEnabled" value="true" />`
-   `<preference name="Scheme" value="file" />`

### 电离-网络视图

[`cordova-plugin-ionic-webview`](https://github.com/ionic-team/cordova-plugin-ionic-webview) 实值 **不兼容** 使用此插件。 它用自己的本地服务器取代了WebView,它直接服务内容,从不调用上面的扩展点,所以被下载的捆绑被默默地忽略了—— `sync()` 财务报告和审定财务报表 `reload()` 似乎成功, 但 WebView 继续显示应用二进制中运出的内容 。 这影响到了Android和iOS.

如果你的应用程序使用 `cordova-plugin-ionic-webview`,删除:

```bash
cordova plugin remove cordova-plugin-ionic-webview
```

它不再被维护,也不再需要:现代Cordova通过iOS上的WKWebView和Android上的系统WebView服务于WebView,其自定义-cheme行为与这个插件所依赖的相同.

## 指南

-   [启动 Capawesome 云直播更新](https://capawesome.io/cloud/live-updates/setup/)
-   [从Ionic Appflow到 Capawesome 云](https://capawesome.io/blog/migrating-from-ionic-appflow-to-capawesome-cloud/)

## 安装

通过运行以下命令来安装插件,并遵循下面特定平台的指示:

```bash
cordova plugin add @capawesome/cordova-live-update --variable APP_ID=<your-app-id>
```

### 机器人

#### 频道

对a **静态** 默认频道,使用 [`DEFAULT_CHANNEL`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-plugin-variables) 插件变量——不需要本地配置 .

使用时 [版本频道](https://capawesome.io/cloud/live-updates/guides/best-practices/#versioned-channels),频道值需要从建筑中插出 `versionCode`,不能通过插件变量表达。 用克多瓦语 `build-extras.gradle` 改为机制。 在你的应用 `config.xml`,添加:

```xml
<platform name="android">
    <resource-file src="build-extras.gradle" target="app/build-extras.gradle"/>
</platform>
```

然后创建 `build-extras.gradle` 旁边 `config.xml`数字 :

```groovy
android {
    applicationVariants.all { variant ->
        variant.resValue "string", "capawesome_live_update_default_channel", "production-${variant.versionCode}"
    }
}
```

### iOS系统

#### 频道

对a **静态** 默认频道,使用 [`DEFAULT_CHANNEL`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-plugin-variables) 插件变量——不需要本地配置 .

使用时 [版本频道](https://capawesome.io/cloud/live-updates/guides/best-practices/#versioned-channels)时,使用 Cordova 的 `<config-file>` 应用程序中的机制 `config.xml`数字 :

```xml
<platform name="ios">
    <config-file target="*-Info.plist" parent="CapawesomeLiveUpdateDefaultChannel">
        <string>production-$(CURRENT_PROJECT_VERSION)</string>
    </config-file>
</platform>
```

Xcode 解析 `$(CURRENT_PROJECT_VERSION)` 在建设时间.

#### 隐私表

从开始 [索多瓦-欧斯 7.1.0](https://cordova.apache.org/announcements/2024/04/03/cordova-ios-7.1.0.html),iOS系统 [隐私宣言](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files) 通过一个 `<privacy-manifest>` 元素在 `<platform name="ios">` 你应用的一节 `config.xml`添加一个 `NSPrivacyAccessedAPICategoryUserDefaults` 此插件的条目 :

```xml
<platform name="ios">
    <privacy-manifest>
        <key>NSPrivacyAccessedAPITypes</key>
        <array>
            <!-- Add this dict entry to the array if the key already exists. -->
            <dict>
                <key>NSPrivacyAccessedAPIType</key>
                <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
                <key>NSPrivacyAccessedAPITypeReasons</key>
                <array>
                    <string>CA92.1</string>
                </array>
            </dict>
        </array>
    </privacy-manifest>
</platform>
```

我们建议宣布 [`CA92.1`](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api#4278401) 作为获得《公约》 [`UserDefaults`](https://developer.apple.com/documentation/foundation/userdefaults) API (英语).

## 插件变量

这些到克多瓦的地图 `<preference>` 输入 `config.xml`。设置为安装时间 `--variable`,或编辑 `config.xml` 直接 :

| 变量 | 默认 | 说明 |
| --- | --- | --- |
| `APP_ID` | _(空虚)_ | Capawesome Cloud app ID(一个UUID). |
| `DEFAULT_CHANNEL` | _(空虚)_ | 默认频道名称 。 被本地的配置所取代或 `setChannel()`。 。 。 . |
| `AUTO_UPDATE_STRATEGY` | `none` | `none` 或者说 `background`。 。 。 . `background` 运行 `sync()` 寒冷的起步和前地(15分钟的节流阀). |
| `HTTP_TIMEOUT` | `60000` | HTTP 请求以毫秒计的超时 . |
| `PUBLIC_KEY` | _(空虚)_ | PEM-编码的RSA公钥用于签名验证. 设定时,所有捆绑下载必须包含有效的签名. |
| `READY_TIMEOUT` | `0` | 等待的秒数 `ready()` 在自动回滚之前。 设为等. `10000` 以启用回滚. `0` 关闭它. |
| `SERVER_DOMAIN` | `api.cloud.capawesome.io` | 卡帕韦斯克云 API 主机(无方案/路径). |
| `AUTO_DELETE_BUNDLES` | `false` | 是否删除未使用的捆绑 `ready()` 名为. |
| `AUTO_BLOCK_ROLLED_BACK_BUNDLES` | `false` | 是否要挡住引起回滚的捆绑. 如果 `READY_TIMEOUT=0`。 。 。 . |

### 示例

```xml
<plugin name="@capawesome/cordova-live-update" spec="0.1.0">
  <variable name="APP_ID" value="6e351b4f-69a7-415e-a057-4567df7ffe94" />
  <variable name="AUTO_UPDATE_STRATEGY" value="background" />
  <variable name="DEFAULT_CHANNEL" value="production" />
  <variable name="READY_TIMEOUT" value="10000" />
  <variable name="PUBLIC_KEY" value="-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDodf1SD0OOn6hIlDuKBza0Ed0OqtwyVJwiyjmE9BJaZ7y8ZUfcF+SKmd0l2cDPM45XIg2tAFux5n29uoKyHwSt+6tCi5CJA5Z1/1eZruRRqABLonV77KS3HUtvOgqRLDnKSV89dYZkM++NwmzOPgIF422mvc+VukcVOBfc8/AHQIDAQAB-----END PUBLIC KEY-----" />
</plugin>
```

## 演示

这里有一个实例: [capawesome-team/cordova-live-update-demo 互联网档案馆的存檔,存档日期2013-12-02](https://github.com/capawesome-team/cordova-live-update-demo)

| 机器人 | iOS系统 |
| --- | --- |
| ![Android Demo](https://raw.githubusercontent.com/capawesome-team/cordova-live-update/main/.github/assets/demo-android.png) | ![iOS Demo](https://raw.githubusercontent.com/capawesome-team/cordova-live-update/main/.github/assets/demo-ios.png) |

## 使用量

插件附着到 `cordova.plugins.LiveUpdate` 一次 `deviceready` 火灾.

如果您使用 TypeScript, 类型定义可以从 npm 包中获取 :

```ts
import type { LiveUpdatePlugin } from '@capawesome/cordova-live-update';

declare const cordova: { plugins: { LiveUpdate: LiveUpdatePlugin } };
```

```javascript
const { LiveUpdate } = cordova.plugins;

const deleteBundle = async () => {
  await LiveUpdate.deleteBundle({ bundleId: 'my-bundle' });
};

const downloadBundle = async () => {
  await LiveUpdate.downloadBundle({ url: 'https://example.com/1.0.0.zip', bundleId: '1.0.0' });
};

const fetchChannels = async () => {
  const result = await LiveUpdate.fetchChannels();
  return result.channels;
};

const fetchLatestBundle = async () => {
  await LiveUpdate.fetchLatestBundle();
};

const getBundles = async () => {
  const result = await LiveUpdate.getBundles();
  return result.bundleIds;
};

const getChannel = async () => {
  const result = await LiveUpdate.getChannel();
  return result.channel;
};

const getCurrentBundle = async () => {
  const result = await LiveUpdate.getCurrentBundle();
  return result.bundleId;
};

const getCustomId = async () => {
  const result = await LiveUpdate.getCustomId();
  return result.customId;
};

const getDeviceId = async () => {
  const result = await LiveUpdate.getDeviceId();
  return result.deviceId;
};

const getNextBundle = async () => {
  const result = await LiveUpdate.getNextBundle();
  return result.bundleId;
};

const getVersionCode = async () => {
  const result = await LiveUpdate.getVersionCode();
  return result.versionCode;
};

const getVersionName = async () => {
  const result = await LiveUpdate.getVersionName();
  return result.versionName;
};

const ready = async () => {
  const result = await LiveUpdate.ready();
  if (result.currentBundleId) {
    console.log(`The app is now using the bundle with the identifier ${result.currentBundleId}.`);
  }
  if (result.previousBundleId) {
    console.log(`The app was using the bundle with the identifier ${result.previousBundleId}.`);
  }
  if (result.rollback) {
    console.log('The app was reset to the default bundle.');
  }
};

const reload = async () => {
  await LiveUpdate.reload();
};

const reset = async () => {
  await LiveUpdate.reset();
};

const setChannel = async () => {
  await LiveUpdate.setChannel({ channel: 'production-5' });
};

const setCustomId = async () => {
  await LiveUpdate.setCustomId({ customId: 'my-custom-id' });
};

const setNextBundle = async () => {
  await LiveUpdate.setNextBundle({ bundleId: '7f0b9bf2-dff6-4be2-bcac-b068cc5ea756' });
};

const sync = async () => {
  const result = await LiveUpdate.sync({
    channel: 'production-5',
  });
  return result.nextBundleId;
};

const isNewBundleAvailable = async () => {
  const { bundleId: latestBundleId } = await LiveUpdate.fetchLatestBundle({
    channel: 'production-5',
  });
  if (latestBundleId) {
    const { bundleId: currentBundleId } = await LiveUpdate.getCurrentBundle();
    return latestBundleId !== currentBundleId;
  } else {
    return false;
  }
};
```

## API 密码

-   [`clearBlockedBundles()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-clearblockedbundles)
-   [`deleteBundle(...)`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-deletebundle)
-   [`downloadBundle(...)`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-downloadbundle)
-   [`fetchChannels(...)`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-fetchchannels)
-   [`fetchLatestBundle(...)`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-fetchlatestbundle)
-   [`getBlockedBundles()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-getblockedbundles)
-   [`getBundles()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-getbundles)
-   [`getChannel()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-getchannel)
-   [`getConfig()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-getconfig)
-   [`getDownloadedBundles()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-getdownloadedbundles)
-   [`getCurrentBundle()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-getcurrentbundle)
-   [`getCustomId()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-getcustomid)
-   [`getDeviceId()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-getdeviceid)
-   [`isSyncing()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-issyncing)
-   [`getNextBundle()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-getnextbundle)
-   [`getVersionCode()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-getversioncode)
-   [`getVersionName()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-getversionname)
-   [`ready()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-ready)
-   [`reload()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-reload)
-   [`reset()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-reset)
-   [`resetConfig()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-resetconfig)
-   [`setChannel(...)`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-setchannel)
-   [`setConfig(...)`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-setconfig)
-   [`setCustomId(...)`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-setcustomid)
-   [`setNextBundle(...)`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-setnextbundle)
-   [`sync(...)`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-sync)
-   [`addListener('downloadBundleProgress', ...)`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-addlistenerdownloadbundleprogress-)
-   [`addListener('nextBundleSet', ...)`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-addlistenernextbundleset-)
-   [`removeAllListeners()`](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-removealllisteners)
-   [接口](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-interfaces)
-   [类型异名](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-type-aliases)

### 清除锁定的 Bundles ()

```typescript
clearBlockedBundles() => any
```

从被封锁列表中清除所有被封锁的捆绑 .

这将删除所有自动被封存的捆绑标识符 由于回滚 `autoBlockRolledBackBundles` 已启用.

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 删除Bundle(...)

```typescript
deleteBundle(options: DeleteBundleOptions) => any
```

从应用程序中删除捆绑 .

| 参数 | 类型 |
| --- | --- |
| **`options`** | `[DeleteBundleOptions](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-deletebundleoptions)` |

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 下载Bundle(...)

```typescript
downloadBundle(options: DownloadBundleOptions) => any
```

下载一捆.

| 参数 | 类型 |
| --- | --- |
| **`options`** | `[DownloadBundleOptions](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-downloadbundleoptions)` |

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 获取频道(...)

```typescript
fetchChannels(options?: FetchChannelsOptions | undefined) => any
```

获取频道从 [云雾](https://capawesome.io/cloud/)。 。 。 .

这主要是为了发展和质量保证的目的. 它允许您获取可用的频道列表,以便您 使用它们之间的动态切换 `setChannel(...)`。 。 。 .

**请注意**: 只为公共频道启用的应用程序工作. 如果频道是私有的,仍然可以使用 `setChannel(...)` 但不会被这个方法返回.

| 参数 | 类型 |
| --- | --- |
| **`options`** | `[FetchChannelsOptions](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-fetchchannelsoptions)` |

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 获取 LatestBundle (...)

```typescript
fetchLatestBundle(options?: FetchLatestBundleOptions | undefined) => any
```

使用 [云雾](https://capawesome.io/cloud/)。 。 。 .

| 参数 | 类型 |
| --- | --- |
| **`options`** | `[FetchLatestBundleOptions](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-fetchlatestbundleoptions)` |

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 获取被锁的邦德莱斯( )

```typescript
getBlockedBundles() => any
```

获取所有被封锁的捆绑标识符 .

返回自动被屏蔽的捆绑标识符列表 由于回滚 `autoBlockRolledBackBundles` 已启用.

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 获取 Bundles( )

```typescript
getBundles() => any
```

获取所有已下载的捆绑标识符 .

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 获取频道( C)

```typescript
getChannel() => any
```

获取用于更新的频道 .

频道按以下顺序解决(最优先先解决): 1

1.  `setChannel()` (Android上的共享首选 / iOS上的用户默认)
2.  本地配置( N)`CapawesomeLiveUpdateDefaultChannel` 内 `Info.plist` 在iOS上或 `capawesome_live_update_default_channel` 内 `strings.xml` (Android号)
3.  这个 `DEFAULT_CHANNEL` 首选项 `config.xml`

**说明**编号: `channel` 参数 `sync()` 拥有最高优先级 但并没有坚持下去,因此没有用这种方法返回.

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 获取Config ()

```typescript
getConfig() => any
```

获取运行时间配置 .

返回包括任何运行时间在内的当前插件配置 通过 `setConfig()`。 。 。 .

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 获得下载 Bundles( )

```typescript
getDownloadedBundles() => any
```

获取所有已下载的捆绑标识符 .

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 获取当前Bundle ()

```typescript
getCurrentBundle() => any
```

获取当前捆绑的捆绑标识符 . 当前捆绑是应用程序目前使用的捆绑.

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 获取 CustomId ()

```typescript
getCustomId() => any
```

获取设备的自定义标识符 .

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 获取DeviceId ()

```typescript
getDeviceId() => any
```

获取唯一设备标识符 .

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 正在同步 ()

```typescript
isSyncing() => any
```

检查同步操作是否正在进行中 .

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 获取 NextBundle ()

```typescript
getNextBundle() => any
```

获取下一捆的捆绑标识符 . 下一个捆绑是调用后使用的捆绑 `reload()` 或重新启动应用程序.

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 获取VersionCode ()

```typescript
getVersionCode() => any
```

获取应用程序的版本代码.

打开 **机器人**,这是 `versionCode` 从 `PackageInfo`。 。 。 . 打开 **iOS系统**,这是 `CFBundleVersion` 从 `Info.plist` 文档.

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 获取VersionName ()

```typescript
getVersionName() => any
```

获取应用程序的版本名 .

打开 **机器人**,这是 `versionName` 从 `PackageInfo`。 。 。 . 打开 **iOS系统**,这是 `CFBundleShortVersionString` 从 `Info.plist` 文档.

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 准备中( )

```typescript
ready() => any
```

通知应用程序已准备好使用的插件, 不需要回滚 .

**请注意**: 当应用程序准备好使用时, 此方法应该立即调用 防止应用程序被重置到默认捆绑中.

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 重新装入( c)

```typescript
reload() => any
```

重新装入应用新捆绑的应用程序 .

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 重设( c)

```typescript
reset() => any
```

将应用程序重置为默认捆绑 .

打电话 `reload()` 或重新启动应用更改的应用程序.

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 重新设置Config ()

```typescript
resetConfig() => any
```

将运行时配置重置为从 `config.xml`。 。 。 .

这将清除任何运行时配置设置通过 `setConfig()`。 。 。 . 变化立即生效.

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 设置频道(...)

```typescript
setChannel(options: SetChannelOptions) => any
```

设置用于更新的频道 .

| 参数 | 类型 |
| --- | --- |
| **`options`** | `[SetChannelOptions](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-setchanneloptions)` |

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 设置 Config (...)

```typescript
setConfig(options: SetConfigOptions) => any
```

设置运行时间配置 .

这样可以在运行时更新插件配置选项 . 这些变化在应用程序重启后一直持续,并立即生效.

**重要内容:** 运行时配置自动重置为默认值 当本地应用程序更新到新版本时。 这确保 之前版本的配置在应用程序更新后不会持续.

| 参数 | 类型 |
| --- | --- |
| **`options`** | `[SetConfigOptions](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-setconfigoptions)` |

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 设置 CustomId (...)

```typescript
setCustomId(options: SetCustomIdOptions) => any
```

设置设备的自定义标识符 .

| 参数 | 类型 |
| --- | --- |
| **`options`** | `[SetCustomIdOptions](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-setcustomidoptions)` |

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 设置下一步Bundle(...)

```typescript
setNextBundle(options: SetNextBundleOptions) => any
```

设定用于应用程序的下一个捆绑 .

打电话 `reload()` 或重新启动应用更改的应用程序.

| 参数 | 类型 |
| --- | --- |
| **`options`** | `[SetNextBundleOptions](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-setnextbundleoptions)` |

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 同步(...)

```typescript
sync(options?: SyncOptions | undefined) => any
```

自动下载并设定应用程序的最新捆绑 [云雾](https://capawesome.io/cloud/)。 。 。 .

打电话 `reload()` 或重新启动应用更改的应用程序.

| 参数 | 类型 |
| --- | --- |
| **`options`** | `[SyncOptions](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-syncoptions)` |

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 添加收听器( “ 下载缓冲进度 ” ,...)

```typescript
addListener(eventName: 'downloadBundleProgress', listenerFunc: DownloadBundleProgressListener) => any
```

听一个捆绑的下载进度.

| 参数 | 类型 |
| --- | --- |
| **`eventName`** | `'downloadBundleProgress'` |
| **`listenerFunc`** | `[DownloadBundleProgressListener](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-downloadbundleprogresslistener)` |

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 添加倾听器( 下一个BundleSet, ...)

```typescript
addListener(eventName: 'nextBundleSet', listenerFunc: NextBundleSetListener) => any
```

听好了,当一个捆绑被设定为下一个捆绑时.

当下个应用程序重新启动时使用捆绑时,此事件会被触发, 通过自动更新或人工呼叫 `setNextBundle()`。 。 。 .

| 参数 | 类型 |
| --- | --- |
| **`eventName`** | `'nextBundleSet'` |
| **`listenerFunc`** | `[NextBundleSetListener](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-nextbundlesetlistener)` |

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 删除所有收听器( )

```typescript
removeAllListeners() => any
```

删除此插件的所有听众 .

**回返情况:** `any`

**自:** 0.1.0 (中文(简体) )

* * *

### 接口

#### 删除边框选项

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`bundleId`** | `string` | 要删除的捆绑的唯一标识符 . | 0.1.0 (中文(简体) ) |

#### 下载边框选项

| Prop | 类型 | 说明 | 默认 | 自兹 |
| --- | --- | --- | --- | --- |
| **`artifactType`** | `'manifest' | 'zip'` | 包裹的文物类型. | `'zip'` | 0.1.0 (中文(简体) ) |
| **`bundleId`** | `string` | 捆绑的独特标识符 . **请注意**: 数值 `public` ,不能用作捆绑标识符. |  | 0.1.0 (中文(简体) ) |
| **`checksum`** | `string` | 自动托管捆绑作为HA-256散列以Hex格式进行核对,以验证捆绑的完整性. **请注意**: 仅支持 `zip` 文物类型. |  | 0.1.0 (中文(简体) ) |
| **`signature`** | `string` | 自行托管捆绑的签名,作为Base64格式的签名SHA-256散列来验证捆绑的完整性. **请注意**: 仅支持 `zip` 文物类型. |  | 0.1.0 (中文(简体) ) |
| **`url`** | `string` | 要下载的捆绑的 URL 。 给 `zip` 文物类型, URL 必须指向 ZIP 文件 。 给 `manifest` 文物类型,URL作为下载单个文件的基础URL. 例如,如果 URL 是 `https://example.com/download`中,插件将使用href下载文件 `index.html` 从 `https://example.com/download?href=index.html`改为: **验证完整性** 文件,服务器应当返回 a `X-Checksum` 以十六进制格式使用 SHA-256 散列头. 改为: **验证签名** 文件,服务器应当返回 a `X-Signature` 以 Base64 格式标注的 SHA-256 散列. |  | 0.1.0 (中文(简体) ) |

#### 获取频道选项

| Prop | 类型 | 说明 | 默认 | 自兹 |
| --- | --- | --- | --- | --- |
| **`limit`** | `number` | 返回的最大频道数 . | `50` | 0.1.0 (中文(简体) ) |
| **`offset`** | `number` | 要跳过的频道数 . | `0` | 0.1.0 (中文(简体) ) |
| **`query`** | `string` | 按名称过滤频道的查询 . |  | 0.1.0 (中文(简体) ) |

#### 获取频道结果

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`channels`** | `{}` | 频道列表. | 0.1.0 (中文(简体) ) |

#### 频道

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`id`** | `string` | 频道独有的标识符. | 0.1.0 (中文(简体) ) |
| **`name`** | `string` | 频道名称. | 0.1.0 (中文(简体) ) |

#### 获取 LastBundle 选项

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`channel`** | `string` | 获取最新捆绑的频道名称 . | 0.1.0 (中文(简体) ) |

#### 获取 LatestBundle 成果

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`artifactType`** | `'manifest' | 'zip'` | 包裹的文物类型. | 0.1.0 (中文(简体) ) |
| **`bundleId`** | `string | null` | 最新捆绑的唯一标识符 。 在"Capawesome Cloud"上,这是应用程序构建文物的ID. 若为 `null`,没有捆绑. | 0.1.0 (中文(简体) ) |
| **`checksum`** | `string` | 如果捆绑是自行托管的, 最新的捆绑的校验和 。 如果捆绑在 Capawesome Cloud 上被托管,在下载捆绑时会将校验和作为响应头返回. | 0.1.0 (中文(简体) ) |
| **`customProperties`** | `{ [key: string]: string; }` | 自定义与最新捆绑相关的属性 . | 0.1.0 (中文(简体) ) |
| **`downloadUrl`** | `string` | 要下载的最新捆绑的 URL 。 将此 URL 传给 `downloadBundle(...)` 下载捆绑的方法. | 0.1.0 (中文(简体) ) |
| **`signature`** | `string` | 如果捆绑是自行托管的, 则签名为最新的捆绑 。 如果捆绑被托管在 Capawesome Cloud上,在下载捆绑时,签名将作为响应头返回. | 0.1.0 (中文(简体) ) |

#### 打开Blockbundles 后台

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`bundleIds`** | `{}` | 所有被屏蔽的捆绑的一组独特的标识符. | 0.1.0 (中文(简体) ) |

#### 获取邦德莱斯结果

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`bundleIds`** | `{}` | 一组所有可用捆绑的独特标识符 . | 0.1.0 (中文(简体) ) |

#### 获取频道结果

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`channel`** | `string | null` | 频道名. 若为 `null`,该应用程序正在使用默认通道. | 0.1.0 (中文(简体) ) |

#### 获取压缩结果

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`appId`** | `string | null` | 用于识别应用程序的应用ID. 若为 `null`,没有配置应用程序ID. | 0.1.0 (中文(简体) ) |
| **`autoUpdateStrategy`** | `'none' | 'background'` | 实时更新的自动更新策略. | 0.1.0 (中文(简体) ) |

#### 下载Bundles Result 中

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`bundleIds`** | `{}` | 所有已下载捆绑的一组独特的标识符 . | 0.1.0 (中文(简体) ) |

#### 获取当前缓冲

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`bundleId`** | `string | null` | 当前捆绑的独特标识符 。 若为 `null`,正在使用默认捆绑. | 0.1.0 (中文(简体) ) |

#### 获取 CustomId 结果

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`customId`** | `string | null` | 设备的自定义标识符 。 若为 `null`,没有设置自定义标识符. | 0.1.0 (中文(简体) ) |

#### 获取DeviceId 成果

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`deviceId`** | `string` | 设备的独特标识符 。 在iOS上, [`identifierForVendor`](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor) 已使用。 此属性的价值对于来自同一供应商运行于同一设备的应用程序是相同的. | 0.1.0 (中文(简体) ) |

#### 正在同步结果

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`syncing`** | `boolean` | 同步操作是否正在进行中 . | 0.1.0 (中文(简体) ) |

#### 获取旁边的废墟

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`bundleId`** | `string | null` | 下一个捆绑的唯一标识符 。 若为 `null`,正在使用默认捆绑. | 0.1.0 (中文(简体) ) |

#### 获取VersionCode结果

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`versionCode`** | `string` | 应用程序的版本代码. 打开 **机器人**,这是 `versionCode` 从 `PackageInfo`打开 **iOS系统**,这是 `CFBundleVersion` 从 `Info.plist` 文档. | 0.1.0 (中文(简体) ) |

#### 获取版本Name

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`versionName`** | `string` | 应用的版本名. 打开 **机器人**,这是 `versionName` 从 `PackageInfo`打开 **iOS系统**,这是 `CFBundleShortVersionString` 从 `Info.plist` 文档. | 0.1.0 (中文(简体) ) |

#### 准备完毕

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`previousBundleId`** | `string | null` | 使用的上次捆绑的标识符 。 若为 `null`,使用了默认捆绑. | 0.1.0 (中文(简体) ) |
| **`currentBundleId`** | `string | null` | 所使用的当前捆绑的标识符 。 若为 `null`,正在使用默认捆绑. | 0.1.0 (中文(简体) ) |
| **`rollback`** | `boolean` | 该应用程序是否被重置为默认捆绑 . | 0.1.0 (中文(简体) ) |

#### 设置频道选项

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`channel`** | `string | null` | 频道名. 设定 `null` 删除频道. | 0.1.0 (中文(简体) ) |

#### 设置配置选项

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`appId`** | `string | null` | 用于识别应用程序的应用ID. 设定 `null` 重置为从 `APP_ID` 首选项 `config.xml`。 。 。 . | 0.1.0 (中文(简体) ) |

#### 设置自定义Id 选项

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`customId`** | `string | null` | 设备的自定义标识符 。 设定 `null` 删除自定义标识符. | 0.1.0 (中文(简体) ) |

#### 设置下一个选项

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`bundleId`** | `string | null` | 要使用的捆绑的唯一标识符 。 设定 `null` 以使用默认捆绑( 和调用相同) `reset()`) (中文(简体) ). | 0.1.0 (中文(简体) ) |

#### 同步选项

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`channel`** | `string` | 获取最新捆绑的频道名称 . | 0.1.0 (中文(简体) ) |

#### 同步结果

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`nextBundleId`** | `string | null` | 下一个捆绑的标识符 。 若为 `null`,该应用程序是最新的,没有新的捆绑. | 0.1.0 (中文(简体) ) |

#### 下载缓冲进程

当捆绑更改的下载进度时触发的事件 .

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`bundleId`** | `string` | 正在下载的捆绑的唯一标识符 . | 0.1.0 (中文(简体) ) |
| **`downloadedBytes`** | `number` | 已下载的字节数 . | 0.1.0 (中文(简体) ) |
| **`progress`** | `number` | 下载进度( 以百分比计) 值 `0` 财务报告和审定财务报表 `1`。 。 。 . | 0.1.0 (中文(简体) ) |
| **`totalBytes`** | `number` | 要下载的字节总数 . | 0.1.0 (中文(简体) ) |

#### 插件听筒

处理从 `addListener(...)`调用 `remove()` 拆卸 听着.

| Prop | 类型 |
| --- | --- |
| **`remove`** | `() => any` |

#### 下一个BundleSet Event

当捆绑被设定为下一个捆绑时触发的事件 .

| Prop | 类型 | 说明 | 自兹 |
| --- | --- | --- | --- |
| **`bundleId`** | `string | null` | 将捆绑设定为下捆绑的唯一标识符 。 若为 `null`,将使用默认捆绑. | 0.1.0 (中文(简体) ) |

### 类型异名

#### 下载缓冲进程倾听器

一个捆绑的下载进度的监听器 .

`(event: [DownloadBundleProgressEvent](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-downloadbundleprogressevent)): void`

#### 下一个BundleSet收听器

当一个捆绑被设定为下一个捆绑时的监听者.

`(event: [NextBundleSetEvent](https://npmcn.com/package/%40capawesome/cordova-live-update/#readme-nextbundlesetevent)): void`

## 更改日志

见 [变动情况](https://github.com/capawesome-team/cordova-live-update/blob/main/CHANGELOG.md)。 。 。 .

## 许可证

见 [自由主义](https://github.com/capawesome-team/cordova-live-update/blob/main/LICENSE)。 。 。 .

## 常见问题

### @capawesome/cordova-live-update 是什么？

Cordova 插件可以实时远程更新您的应用程序 \.

### 如何安装 @capawesome/cordova-live-update？

在项目目录运行 npm install @capawesome/cordova-live-update，或使用 pnpm add / yarn add / bun add。

### @capawesome/cordova-live-update 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @capawesome/cordova-live-update 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @capawesome/cordova-live-update 可以商用吗？

@capawesome/cordova-live-update 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @capawesome/cordova-live-update 的下载量有多少？

根据 npm 官方下载统计，@capawesome/cordova-live-update 在 2026/10/09 – 2026/11/07 这 30 天内被下载 3,170 次，日均约 106 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @capawesome/cordova-live-update 还在维护吗？

最新版本 0\.1\.1 发布于 2026/11/12（今天）；至今共发布 3 个版本，其中过去 12 个月发布了 3 个；首次发布于 2026/06/02。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

