更新记录

1.0.2(2025-11-24) 下载此版本

做了对微信小程序的兼容

1.0.1(2025-11-24) 下载此版本

做了对应的兼容

1.0.0(2025-11-24) 下载此版本

在原来基础上新增4种模板样式

查看更多

平台兼容性

云端兼容性

阿里云 腾讯云 支付宝云
×

uni-app(3.6.14)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
- - -

uni-app x(3.6.14)

Chrome Safari Android iOS 鸿蒙 微信小程序

云函数类插件通用教程

使用云函数类插件的前提是:使用HBuilderX 2.9+


fxy-upgrade-app 升级中心

uni-app 应用升级中心客户端插件,支持 wgt 资源包更新和整包更新。

功能特性

  • ✅ 支持 wgt 资源包更新(热更新)
  • ✅ 支持整包更新(apk/ipa)
  • ✅ 支持强制更新和可选更新
  • ✅ 支持静默更新(仅 wgt)
  • ✅ 自动识别 iOS/Android 平台
  • ✅ 支持自定义升级弹窗样式
  • ✅ 微信小程序端通过 getUpdateManager 检查/应用版本
  • ✅ 使用 HTTP API,无需云函数

安装配置

1. 在 pages.json 中配置升级弹窗页面

{
  "pages": [
    {
      "path": "uni_modules/fxy-uni-upgrade-center-app/pages/upgrade-popup",
      "style": {
        "disableScroll": true,
        "app-plus": {
          "backgroundColorTop": "transparent",
          "background": "transparent",
          "titleNView": false,
          "scrollIndicator": false,
          "popGesture": "none",
          "animationType": "fade-in",
          "animationDuration": 200
        }
      }
    }
  ]
}

使用方法

基础使用

App.vueonLaunch 或需要检查更新的地方调用:

import checkUpdate from '@/uni_modules/fxy-uni-upgrade-center-app/utils/check-update'

export default {
  onLaunch() {
    // 检查更新
    checkUpdate({
      apiUrl: 'https://your-api-domain.com/api/check-version', // 必填:检查版本的 API 地址
      method: 'POST' // 可选:请求方法,默认为 POST
    }).then(result => {
      console.log('检查更新结果:', result)
    }).catch(err => {
      console.error('检查更新失败:', err)
    })
  }
}

完整示例

微信小程序端

import checkUpdate from '@/uni_modules/fxy-uni-upgrade-center-app/utils/check-update'

export default {
  onShow() {
    // #ifdef MP-WEIXIN
    checkUpdate({
      mp: {
        title: '发现新版本',
        contents: '1、修复已知问题\n2、优化体验',
        showModal: true // 设为 false 可直接静默应用
      }
    }).then(info => {
      console.log('小程序更新结果', info)
    }).catch(err => {
      console.error('小程序更新检查失败', err)
    })
    // #endif
  }
}

无需接入后台时可以完全省略 apiUrl,只依赖微信的 getUpdateManager;如果想展示自定义更新日志或强制升级标记,可在 mp.mpPayload 中附带业务字段,并提供 apiUrl(或 mpApiUrl)供后端返回更详细的数据。

import checkUpdate from '@/uni_modules/fxy-uni-upgrade-center-app/utils/check-update'

export default {
  onLaunch() {
    // 延迟检查更新,避免影响启动速度
    setTimeout(() => {
      checkUpdate({
        apiUrl: 'https://your-api-domain.com/api/check-version',
        method: 'POST'
      }).then(result => {
        if (result) {
          console.log('发现新版本:', result.version)
        } else {
          console.log('当前已是最新版本')
        }
      }).catch(err => {
        console.error('检查更新失败:', err.message)
      })
    }, 2000)
  }
}

API 说明

checkUpdate(options)

检查应用更新

参数:

参数名 类型 必填 说明
apiUrl String App端必填 检查版本的 API 地址;小程序端可不传,默认只走微信 getUpdateManager
method String HTTP 请求方法,默认为 'POST'(App端使用)
mp Object 小程序端专用配置(见下)

mp 配置:

参数名 类型 必填 说明
mpApiUrl String 若需要单独的 MP 接口,可传此字段覆盖 apiUrl
mpMethod String MP 端自定义请求方法
mpPayload Object 附加到请求体中的数据(默认附带 platform: 'mp-weixin' 等)
title String 更新弹窗标题,默认“更新提示”
contents String 弹窗正文,可用于展示更新日志
showModal Boolean 设为 false 时直接应用更新
silent Boolean 同上,设为 true 时跳过弹窗
confirmText String 弹窗确认按钮文字
cancelText String 弹窗取消按钮文字
force Boolean 手动标记是否强制更新(若后端没有返回该字段)
forceApply Boolean 强制更新时是否自动应用,默认弹窗提示
autoApply Boolean 非强制更新也自动应用
onCheck Function 监听 getUpdateManager.onCheckForUpdate 回调
onCancel Function 用户取消更新时触发
onError Function 下载失败时回调

返回值:

返回 Promise,resolve 时返回更新包信息对象,如果没有更新则返回 null。

更新包信息对象:

{
  version: '1.0.2',           // 版本号
  contents: '更新内容',        // 更新日志
  type: 'wgt',                // 包类型:wgt/apk/ipa
  url: 'https://...',         // 下载地址
  platform: 'and',            // 平台:and/iOS
  is_mandatory: false,        // 是否强制更新
  title: '更新日志'            // 标题
}

后端 API 接口说明

请求参数

App 端默认会携带: 小程序端默认会携带:

{
  action: 'checkVersion',
  platform: 'mp-weixin',
  appid: '小程序AppId',
  mpVersion: '当前基础库标识',
  envVersion: 'develop/trial/release'
}
{
  action: 'checkVersion',
  appid: '应用ID',
  appVersion: '应用版本号',
  wgtVersion: 'wgt版本号'
}

响应数据格式

新格式(推荐)

{
  "version": "1.0.2",
  "note": "1、修复登录问题\n2、优化性能\n3、新增功能",
  "type": "wgt",
  "androidUrl": "https://your.domain.com/pkg/app_1.0.2.wgt",
  "iosAppStoreUrl": "https://apps.apple.com/cn/app/your-app/id1234567890",
  "force": false
}

字段说明:

字段名 类型 必填 说明
version String 新版本号
note String 更新日志内容,支持换行符 \n
type String 包类型:wgt(资源包)/ apk(Android整包)/ ipa(iOS整包)
androidUrl String Android 平台下载地址
iosAppStoreUrl String iOS App Store 地址,iOS 平台且非 wgt 时使用
force Boolean 是否强制更新,默认为 false

兼容旧格式

{
  "code": 200,
  "message": "成功",
  "version": "1.0.2",
  "contents": "更新内容",
  "type": "wgt",
  "url": "https://your.domain.com/pkg/app_1.0.2.wgt",
  "platform": "and",
  "is_mandatory": false,
  "is_silently": false,
  "title": "更新日志"
}

响应格式说明:

  • 如果后端直接返回数据对象,则直接使用
  • 如果后端返回的数据包装在 result 字段中(如 { result: {...} }),也会自动解析

更新流程说明

  1. 检查更新:调用 checkUpdate 函数,向后端 API 发送版本检查请求
  2. 版本对比:后端返回是否有新版本
  3. 静默更新:如果是 wgt 类型且设置了静默更新,会在后台下载并安装
  4. 弹窗提示:其他情况会弹出升级弹窗,用户可以选择立即更新或稍后更新
  5. 下载安装
    • iOS 非 wgt 包:跳转到 App Store
    • Android 或 wgt 包:下载后自动安装
  6. 重启应用:wgt 包安装后需要重启应用生效

自定义升级弹窗

升级弹窗页面位于 pages/upgrade-popup.vue,你可以:

  1. 修改弹窗样式和布局
  2. 替换图片资源(在 images 目录下)
  3. 自定义按钮文字和提示信息

注意事项

  1. wgt 更新:打包前请务必将 manifest.json 中的版本修改为更高版本
  2. API 地址:必须提供有效的 apiUrl 参数,否则会报错
  3. 平台识别:代码会自动根据设备平台(iOS/Android)选择对应的下载地址
  4. 强制更新:设置 force: true 时,用户无法取消更新,必须更新后才能继续使用
  5. 静默更新:仅支持 wgt 资源包,会在后台下载安装,下次启动生效
  6. 真机调试:真机运行时 appid 为固定值 "HBuilder",建议使用本地调试或正式打包后测试

常见问题

Q: 如何判断是否需要更新?

A: 后端 API 应该根据请求中的 appVersionwgtVersion 与服务器最新版本进行对比,如果有新版本则返回更新信息,否则返回空数据或特定标识。

Q: 小程序如何提示用户更新?

A: 项目内封装了 getUpdateManager,在下载完成后可选择静默应用或通过 uni.showModal 提示用户。若后端返回 force / is_mandatory 字段,则弹窗会自动隐藏取消按钮,实现强制更新。

Q: iOS 如何更新?

A:

  • 如果是 wgt 资源包,可以直接下载安装
  • 如果是整包(ipa),需要跳转到 App Store,使用 iosAppStoreUrl 字段

Q: 如何实现静默更新?

A: 在旧格式中使用 is_silently: true,仅支持 wgt 类型。新格式暂不支持静默更新,可以通过后端返回旧格式来实现。

Q: 更新失败怎么办?

A: 代码会自动处理下载和安装失败的情况,并提示用户。如果安装失败,用户可以重新下载。

更新日志

v1.0.0

  • 初始版本
  • 支持 wgt 和整包更新
  • 支持强制更新和可选更新
  • 移除云函数依赖,使用 HTTP API
  • 支持新的数据格式,自动识别平台

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。