更新记录

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 鸿蒙 微信小程序
√ √ √ √ √ √

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.vue 的 onLaunch 或需要检查更新的地方调用:

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 应该根据请求中的 appVersion 和 wgtVersion 与服务器最新版本进行对比,如果有新版本则返回更新信息,否则返回空数据或特定标识。

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协议

暂无用户评论。