Cordova 现场更新插件
Cordova插件允许您在不要求用户从应用商店下载新版本的情况下,远程实时更新您的应用,也称为Over-the-Air(OTA)更新.
特征
- ++ 支持 Android 和 iOS 软件
- 与 库克多瓦网络视频 -对 没有 需求
cordova-plugin-ionic-webview - 📦 套装管理 ——下载、设置和删除捆绑
- ☁️ 云支持 ——通过 云雾
- 📺 频道支持 ——为应用程序设置管理不同版本的频道
- 🔄 自动更新 - 15分钟节流阀的背景更新战略
- 🛟 回滚 ——在失败的更新中自动返回默认捆绑
- 🔁 Delta 更新 — 显示模式下载只更改文件
- ⚙️ 运行时配置 ——运行时更新插件配置
- 📡 更新生命周期事件 ——跟踪下载进度,对捆绑变化作出反应,检测再装入
- 🏷️ 自定义属性 – 通过 Capwesome Cloud 连接自定义密钥值元数据与捆绑
- 🔒 警卫 ——通过RSA签名验证捆绑物的真实性和完整性
- 🌐 开源 麻省理工学院获得执照
通讯
随时更新有关卡帕韦索姆、Capacitor和Ionic生态系统的最新消息和最新消息,因为我们 《卡帕索克通讯》。 。 。 .
兼容性
| 插件版本 | 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 实值 不兼容 使用此插件。 它用自己的本地服务器取代了WebView,它直接服务内容,从不调用上面的扩展点,所以被下载的捆绑被默默地忽略了—— sync() 财务报告和审定财务报表 reload() 似乎成功, 但 WebView 继续显示应用二进制中运出的内容 。 这影响到了Android和iOS.
如果你的应用程序使用 cordova-plugin-ionic-webview,删除:
cordova plugin remove cordova-plugin-ionic-webview
它不再被维护,也不再需要:现代Cordova通过iOS上的WKWebView和Android上的系统WebView服务于WebView,其自定义-cheme行为与这个插件所依赖的相同.
指南
安装
通过运行以下命令来安装插件,并遵循下面特定平台的指示:
cordova plugin add @capawesome/cordova-live-update --variable APP_ID=<your-app-id>
机器人
频道
对a 静态 默认频道,使用 DEFAULT_CHANNEL 插件变量——不需要本地配置 .
使用时 版本频道,频道值需要从建筑中插出 versionCode,不能通过插件变量表达。 用克多瓦语 build-extras.gradle 改为机制。 在你的应用 config.xml,添加:
<platform name="android">
<resource-file src="build-extras.gradle" target="app/build-extras.gradle"/>
</platform>
然后创建 build-extras.gradle 旁边 config.xml数字 :
android {
applicationVariants.all { variant ->
variant.resValue "string", "capawesome_live_update_default_channel", "production-${variant.versionCode}"
}
}
iOS系统
频道
对a 静态 默认频道,使用 DEFAULT_CHANNEL 插件变量——不需要本地配置 .
使用时 版本频道时,使用 Cordova 的 <config-file> 应用程序中的机制 config.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,iOS系统 隐私宣言 通过一个 <privacy-manifest> 元素在 <platform name="ios"> 你应用的一节 config.xml添加一个 NSPrivacyAccessedAPICategoryUserDefaults 此插件的条目 :
<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 作为获得《公约》 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。 。 。 . |
示例
<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
| 机器人 | iOS系统 |
|---|---|
![]() | ![]() |
使用量
插件附着到 cordova.plugins.LiveUpdate 一次 deviceready 火灾.
如果您使用 TypeScript, 类型定义可以从 npm 包中获取 :
import type { LiveUpdatePlugin } from '@capawesome/cordova-live-update';
declare const cordova: { plugins: { LiveUpdate: LiveUpdatePlugin } };
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()deleteBundle(...)downloadBundle(...)fetchChannels(...)fetchLatestBundle(...)getBlockedBundles()getBundles()getChannel()getConfig()getDownloadedBundles()getCurrentBundle()getCustomId()getDeviceId()isSyncing()getNextBundle()getVersionCode()getVersionName()ready()reload()reset()resetConfig()setChannel(...)setConfig(...)setCustomId(...)setNextBundle(...)sync(...)addListener('downloadBundleProgress', ...)addListener('nextBundleSet', ...)removeAllListeners()- 接口
- 类型异名
清除锁定的 Bundles ()
clearBlockedBundles() => any
从被封锁列表中清除所有被封锁的捆绑 .
这将删除所有自动被封存的捆绑标识符
由于回滚 autoBlockRolledBackBundles 已启用.
回返情况: any
自: 0.1.0 (中文(简体) )
删除Bundle(...)
deleteBundle(options: DeleteBundleOptions) => any
从应用程序中删除捆绑 .
| 参数 | 类型 |
|---|---|
options | DeleteBundleOptions |
回返情况: any
自: 0.1.0 (中文(简体) )
下载Bundle(...)
downloadBundle(options: DownloadBundleOptions) => any
下载一捆.
| 参数 | 类型 |
|---|---|
options | DownloadBundleOptions |
回返情况: any
自: 0.1.0 (中文(简体) )
获取频道(...)
fetchChannels(options?: FetchChannelsOptions | undefined) => any
获取频道从 云雾。 。 。 .
这主要是为了发展和质量保证的目的.
它允许您获取可用的频道列表,以便您
使用它们之间的动态切换 setChannel(...)。 。 。 .
请注意: 只为公共频道启用的应用程序工作.
如果频道是私有的,仍然可以使用 setChannel(...)
但不会被这个方法返回.
| 参数 | 类型 |
|---|---|
options | FetchChannelsOptions |
回返情况: any
自: 0.1.0 (中文(简体) )
获取 LatestBundle (...)
fetchLatestBundle(options?: FetchLatestBundleOptions | undefined) => any
使用 云雾。 。 。 .
| 参数 | 类型 |
|---|---|
options | FetchLatestBundleOptions |
回返情况: any
自: 0.1.0 (中文(简体) )
获取被锁的邦德莱斯( )
getBlockedBundles() => any
获取所有被封锁的捆绑标识符 .
返回自动被屏蔽的捆绑标识符列表
由于回滚 autoBlockRolledBackBundles 已启用.
回返情况: any
自: 0.1.0 (中文(简体) )
获取 Bundles( )
getBundles() => any
获取所有已下载的捆绑标识符 .
回返情况: any
自: 0.1.0 (中文(简体) )
获取频道( C)
getChannel() => any
获取用于更新的频道 .
频道按以下顺序解决(最优先先解决): 1
setChannel()(Android上的共享首选 / iOS上的用户默认)- 本地配置( N)
CapawesomeLiveUpdateDefaultChannel内Info.plist在iOS上或capawesome_live_update_default_channel内strings.xml(Android号) - 这个
DEFAULT_CHANNEL首选项config.xml
说明编号: channel 参数 sync() 拥有最高优先级
但并没有坚持下去,因此没有用这种方法返回.
回返情况: any
自: 0.1.0 (中文(简体) )
获取Config ()
getConfig() => any
获取运行时间配置 .
返回包括任何运行时间在内的当前插件配置
通过 setConfig()。 。 。 .
回返情况: any
自: 0.1.0 (中文(简体) )
获得下载 Bundles( )
getDownloadedBundles() => any
获取所有已下载的捆绑标识符 .
回返情况: any
自: 0.1.0 (中文(简体) )
获取当前Bundle ()
getCurrentBundle() => any
获取当前捆绑的捆绑标识符 . 当前捆绑是应用程序目前使用的捆绑.
回返情况: any
自: 0.1.0 (中文(简体) )
获取 CustomId ()
getCustomId() => any
获取设备的自定义标识符 .
回返情况: any
自: 0.1.0 (中文(简体) )
获取DeviceId ()
getDeviceId() => any
获取唯一设备标识符 .
回返情况: any
自: 0.1.0 (中文(简体) )
正在同步 ()
isSyncing() => any
检查同步操作是否正在进行中 .
回返情况: any
自: 0.1.0 (中文(简体) )
获取 NextBundle ()
getNextBundle() => any
获取下一捆的捆绑标识符 .
下一个捆绑是调用后使用的捆绑 reload()
或重新启动应用程序.
回返情况: any
自: 0.1.0 (中文(简体) )
获取VersionCode ()
getVersionCode() => any
获取应用程序的版本代码.
打开 机器人,这是 versionCode 从 PackageInfo。 。 。 .
打开 iOS系统,这是 CFBundleVersion 从 Info.plist 文档.
回返情况: any
自: 0.1.0 (中文(简体) )
获取VersionName ()
getVersionName() => any
获取应用程序的版本名 .
打开 机器人,这是 versionName 从 PackageInfo。 。 。 .
打开 iOS系统,这是 CFBundleShortVersionString 从 Info.plist 文档.
回返情况: any
自: 0.1.0 (中文(简体) )
准备中( )
ready() => any
通知应用程序已准备好使用的插件, 不需要回滚 .
请注意: 当应用程序准备好使用时, 此方法应该立即调用 防止应用程序被重置到默认捆绑中.
回返情况: any
自: 0.1.0 (中文(简体) )
重新装入( c)
reload() => any
重新装入应用新捆绑的应用程序 .
回返情况: any
自: 0.1.0 (中文(简体) )
重设( c)
reset() => any
将应用程序重置为默认捆绑 .
打电话 reload() 或重新启动应用更改的应用程序.
回返情况: any
自: 0.1.0 (中文(简体) )
重新设置Config ()
resetConfig() => any
将运行时配置重置为从 config.xml。 。 。 .
这将清除任何运行时配置设置通过 setConfig()。 。 。 .
变化立即生效.
回返情况: any
自: 0.1.0 (中文(简体) )
设置频道(...)
setChannel(options: SetChannelOptions) => any
设置用于更新的频道 .
| 参数 | 类型 |
|---|---|
options | SetChannelOptions |
回返情况: any
自: 0.1.0 (中文(简体) )
设置 Config (...)
setConfig(options: SetConfigOptions) => any
设置运行时间配置 .
这样可以在运行时更新插件配置选项 . 这些变化在应用程序重启后一直持续,并立即生效.
重要内容: 运行时配置自动重置为默认值 当本地应用程序更新到新版本时。 这确保 之前版本的配置在应用程序更新后不会持续.
| 参数 | 类型 |
|---|---|
options | SetConfigOptions |
回返情况: any
自: 0.1.0 (中文(简体) )
设置 CustomId (...)
setCustomId(options: SetCustomIdOptions) => any
设置设备的自定义标识符 .
| 参数 | 类型 |
|---|---|
options | SetCustomIdOptions |
回返情况: any
自: 0.1.0 (中文(简体) )
设置下一步Bundle(...)
setNextBundle(options: SetNextBundleOptions) => any
设定用于应用程序的下一个捆绑 .
打电话 reload() 或重新启动应用更改的应用程序.
| 参数 | 类型 |
|---|---|
options | SetNextBundleOptions |
回返情况: any
自: 0.1.0 (中文(简体) )
同步(...)
sync(options?: SyncOptions | undefined) => any
自动下载并设定应用程序的最新捆绑 云雾。 。 。 .
打电话 reload() 或重新启动应用更改的应用程序.
| 参数 | 类型 |
|---|---|
options | SyncOptions |
回返情况: any
自: 0.1.0 (中文(简体) )
添加收听器( “ 下载缓冲进度 ” ,...)
addListener(eventName: 'downloadBundleProgress', listenerFunc: DownloadBundleProgressListener) => any
听一个捆绑的下载进度.
| 参数 | 类型 |
|---|---|
eventName | 'downloadBundleProgress' |
listenerFunc | DownloadBundleProgressListener |
回返情况: any
自: 0.1.0 (中文(简体) )
添加倾听器( 下一个BundleSet, ...)
addListener(eventName: 'nextBundleSet', listenerFunc: NextBundleSetListener) => any
听好了,当一个捆绑被设定为下一个捆绑时.
当下个应用程序重新启动时使用捆绑时,此事件会被触发,
通过自动更新或人工呼叫 setNextBundle()。 。 。 .
| 参数 | 类型 |
|---|---|
eventName | 'nextBundleSet' |
listenerFunc | NextBundleSetListener |
回返情况: any
自: 0.1.0 (中文(简体) )
删除所有收听器( )
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 已使用。 此属性的价值对于来自同一供应商运行于同一设备的应用程序是相同的. | 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): void
下一个BundleSet收听器
当一个捆绑被设定为下一个捆绑时的监听者.
(event: NextBundleSetEvent): void
更改日志
见 变动情况。 。 。 .
许可证
见 自由主义。 。 。 .

