更新记录
1.0.4(2026-04-27)
- 继续优化
1.0.3(2026-04-27)
- 更新了说明文档
1.0.2(2026-04-27)
- 优化体验感
平台兼容性
uni-app(4.25)
| Vue2 | Vue2插件版本 | Vue3 | Vue3插件版本 | Chrome | Safari | app-vue | app-vue插件版本 | app-nvue | app-nvue插件版本 | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | 1.0.0 | √ | 1.0.0 | - | - | √ | 1.0.0 | √ | 1.0.0 | 5.0 | 1.0.0 | 12 | 1.0.0 | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.25)
| Chrome | Safari | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|---|---|
| - | - | 5.0 | 1.0.0 | 12 | 1.0.0 | - | - |
fl-appUpgrade
fl-appUpgrade 是一个面向 uni-app / uni-app x App 端的 UTS 升级插件,提供 Android / iOS 原生升级弹框、APK 下载进度、wgt 资源更新回调,以及 App Store / 应用市场跳转能力。
插件适用于以下场景:
- 需要统一管理 Android / iOS 版本升级入口
- 需要同时支持整包升级与
wgt资源更新 - 需要区分强制更新与可取消更新策略
- 需要以
uni_modules形式复用升级能力
功能特性
- 支持 Android / iOS 原生升级弹框
- 支持 Android APK 下载进度展示与安装拉起
- 支持
wgt下载完成回调,便于接入plus.runtime.install - 支持 iOS App Store 跳转
- 支持 Android 应用市场包名或 Scheme 跳转
- 支持强制更新、可取消更新、后台下载等升级策略
- 支持
classic、hero、spotlight、minimal四套弹窗模板 - 支持头图、角标、按钮文案和主题配色自定义
支持平台
支持:
- Android App
- iOS App
uni-app Vue2uni-app Vue3uni-app x
不支持:
- H5
- 各类小程序平台
说明:
- Web 和小程序端不会执行原生升级逻辑
- 插件包含 Android
Kotlin与 iOSSwift的原生实现,建议在自定义调试基座或正式包中验证 - 当前工程按
uni-app / uni-app x 4.25+场景设计,开发时建议使用较新的HBuilderX
安装与引入
将插件安装到项目 uni_modules 目录后,在页面或业务模块中引入:
import {
startUpgrade,
closeUpgradeDialog,
installApk,
openMarket
} from "@/uni_modules/fl-appUpgrade"
API
startUpgrade(options)
统一升级入口。
参数说明
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
mode |
string |
是 | 升级模式,支持 apk、wgt、store |
title |
string |
是 | 弹框标题 |
content |
string |
是 | 升级说明,支持换行 |
downloadUrl |
string |
是 | 下载地址;store 模式下一般传商店地址 |
template |
string |
否 | 弹窗模板,支持 classic、hero、spotlight、minimal |
heroImage |
string |
否 | 头图地址,支持 http(s) 地址或本地路径 |
badgeText |
string |
否 | 角标文案 |
version |
string |
否 | 目标版本号 |
force |
boolean |
否 | 是否强制更新 |
showBackgroundButton |
boolean |
否 | Android 是否显示“进入后台”按钮 |
backgroundButtonText |
string |
否 | Android 后台下载按钮文案 |
updateButtonText |
string |
否 | 升级按钮文案 |
cancelButtonText |
string |
否 | 取消按钮文案 |
progressText |
string |
否 | 下载中的进度文案 |
fileName |
string |
否 | 自定义下载文件名 |
heroImageHeight |
number |
否 | 头图高度 |
storePackageName |
string |
否 | Android 市场包名 |
storeSchemeUrl |
string |
否 | iOS App Store 链接或 Android 市场 Scheme |
autoInstallApk |
boolean |
否 | Android 下载完成后是否自动拉起安装 |
autoOpenStore |
boolean |
否 | 应用市场模式下是否自动打开商店 |
theme |
UpgradeTheme |
否 | 升级弹窗主题配置 |
onEvent |
(event) => void |
否 | 过程事件回调 |
fail |
(result) => void |
否 | 失败回调 |
complete |
(result) => void |
否 | 完成回调 |
模式说明
apk:Android 整包升级,适用于 APK 下载与安装wgt:资源更新,下载完成后通过事件回调交由业务侧安装store:商店升级,适用于 iOS App Store 或 Android 应用市场跳转
模板说明
classic:传统升级卡片,适合常规业务场景hero:大头图样式,适合品牌化升级提示spotlight:强调型样式,适合强更或大版本发布minimal:极简样式,适合轻提示或内部应用
closeUpgradeDialog()
手动关闭升级弹框。
说明:
- 可取消更新场景下可正常关闭
- 强制更新下载进行中会拦截关闭行为,并触发
blocked-close事件 - Android 弹框展示期间会拦截系统返回关闭
installApk(options)
Android 单独拉起 APK 安装页。
installApk({
filePath: "/storage/emulated/0/Android/data/xxx/files/Download/app-release.apk"
})
openMarket(options)
跳转应用市场。
openMarket({
androidPackageName: "com.example.app",
androidMarketPackage: "com.huawei.appmarket",
iosStoreUrl: "https://apps.apple.com/cn/app/id1234567890"
})
事件说明
onEvent 回调中可能出现以下事件:
| 事件名 | 说明 |
|---|---|
native-enter |
已进入原生升级逻辑 |
opened |
升级弹框已展示 |
confirm |
用户确认升级 |
cancelled |
用户取消升级 |
background |
Android 切换为后台下载 |
blocked-close |
关闭行为被拦截 |
download-start |
开始下载 |
download-enqueued |
下载任务已提交 |
pending |
下载等待中 |
progress |
下载中 |
paused |
下载暂停 |
downloaded |
文件下载完成 |
completed |
升级流程完成 |
failed |
升级流程失败 |
事件对象结构:
type UpgradeEvent = {
type: string
progress?: number
filePath?: string
errCode?: number
errMsg?: string
message?: string
}
主题配置
theme 支持以下可选字段:
backgroundColor:弹框背景色titleColor:标题文字色contentColor:内容文字色primaryColor:主按钮背景色updateButtonTextColor:主按钮文字色cancelTextColor:Android “进入后台”按钮文字色secondaryButtonBackgroundColor:次按钮背景色secondaryButtonTextColor:次按钮文字色badgeBackgroundColor:角标背景色badgeTextColor:角标文字色progressTrackColor:进度条轨道色progressTextColor:进度文案色
使用示例
Android 整包升级
startUpgrade({
mode: "apk",
template: "hero",
heroImage: "https://example.com/path/to/upgrade-banner.jpg",
heroImageHeight: 168,
content: "1. 修复已知问题\n2. 优化启动速度\n3. 提升稳定性",
downloadUrl: "https://example.com/path/to/app-release.apk",
version: "1.2.3",
force: false,
autoInstallApk: true,
theme: {
backgroundColor: "#FFFFFF",
titleColor: "#111111",
contentColor: "#5E6472",
primaryColor: "#1677FF",
updateButtonTextColor: "#FFFFFF",
secondaryButtonBackgroundColor: "#EEF2F7",
secondaryButtonTextColor: "#667085",
cancelTextColor: "#667085",
badgeBackgroundColor: "#1677FF",
badgeTextColor: "#FFFFFF",
progressTrackColor: "#E5E7EB",
progressTextColor: "#5E6472"
},
onEvent(e) {
console.log("upgrade event", e)
},
fail(err) {
console.error("upgrade fail", err)
},
complete(res) {
console.log("upgrade complete", res)
}
})
Android 强制更新
startUpgrade({
mode: "apk",
title: "需要升级后继续使用",
content: "当前版本已停止支持,请立即升级到最新版本",
downloadUrl: "https://example.com/path/to/app-release.apk",
version: "1.2.3",
force: true,
showBackgroundButton: false
})
强制更新场景下:
- 不显示取消按钮
- Android 返回关闭会被拦截
- 下载中调用
closeUpgradeDialog()会被拦截
wgt 资源更新
startUpgrade({
mode: "wgt",
title: "资源更新",
content: "检测到资源包更新,点击立即升级",
downloadUrl: "https://example.com/path/to/update.wgt",
version: "1.2.3-20260424",
onEvent(e) {
if (e.type === "downloaded" && e.filePath) {
plus.runtime.install(
e.filePath,
{ force: false },
() => {
plus.runtime.restart()
},
(err) => {
console.error("wgt install failed", err)
}
)
}
}
})
iOS App Store 升级
startUpgrade({
mode: "store",
title: "发现新版本",
content: "请前往 App Store 完成升级",
downloadUrl: "https://apps.apple.com/cn/app/id1234567890",
storeSchemeUrl: "https://apps.apple.com/cn/app/id1234567890"
})
推荐版本策略
建议服务端至少返回以下字段:
latestVersion:最新整包版本minVersion:最低支持整包版本wgtVersion:最新资源版本
推荐策略:
当前整包版本 < minVersion:强制整包升级minVersion <= 当前整包版本 < latestVersion:提示可取消整包升级当前整包版本 == latestVersion && 当前 wgt 版本 < wgtVersion:提示资源更新
平台差异
Android
- 整包升级通过系统下载管理器实现
- 下载完成后可自动拉起 APK 安装
- 应用市场跳转优先使用传入的市场包名或 Scheme
- APK 安装依赖插件内置
FileProvider
iOS
- iOS 整包升级本质上是跳转 App Store
- iOS 不支持应用内静默安装 IPA
wgt模式只负责下载并回调文件路径,安装逻辑需业务侧接入
接入注意事项
wgt仅更新前端资源,不会更新插件自身的UTS / Kotlin / Swift原生代码- 标准调试基座下,部分原生配置和三方能力可能不会生效
- 真实升级能力请在自定义调试基座或正式包中验证
store模式下建议同时提供downloadUrl与storeSchemeUrl,避免不同设备跳转差异
常见问题
为什么标准基座下调用没有效果
插件包含原生代码与原生配置,需使用自定义调试基座或正式打包环境验证。
为什么 iOS 不能直接安装 IPA
由于 iOS 平台限制,应用无法自行安装整包,整包升级应跳转 App Store。

收藏人数:
购买普通授权版(
试用
赞赏(1)
下载 0
赞赏 1
下载 11704638
赞赏 1911
赞赏
京公网安备:11010802035340号