更新记录

1.0.7(2025-07-04) 下载此版本

使用dialogPage重写更新组件,支持覆盖原生导航栏

1.0.6(2024-05-15) 下载此版本

优化示例项目

1.0.5(2024-05-14) 下载此版本

优化文档

查看更多

平台兼容性

uni-app x

Chrome Safari Android iOS 鸿蒙 微信小程序
- - 5.0 12 - -

yq-update-x uniappx 更新

uniappx的app整包更新组件 支持打开安卓、苹果、鸿蒙应用市场 支持app内部下载

vue或者nvue的版本在这个地址,插件地址

  • ui图是采用uniapp官方更新组件的ui,如不满足需要,可自行替换
  • 一键式检查更新,同时支持整包升级与wgt资源包更新 支持打开安卓自带的应用市场和苹果appstore
  • 好看、实用、可自定义的客户端提示框
  • 支持强制更新,无法退出
  • 支持覆盖原生tabar

安装指引

  1. 在插件市场打开本插件页面,在右侧点击使用 HBuilderX 导入插件,选择要导入的项目点击确定

  2. pages.json中添加页面路径。注意:一定不要设置为pages.json中第一项

"pages": [
        // ……其他页面配置
        {
            "path" : "uni_modules/yq-update-x/components/yq-update-x/yq-update-x",
        }
    ]
  1. 在index.vue的onShow中查看安卓更新的显示效果 (注意:这里只是查看显示效果)
onShow: function () {
    // 模拟后端返回的数据
    const data = {
        describe: '<span>1、修复已知问题</span><br/><span>2、优化用户体验</span>',
        edition_url: 'https://web-ext-storage.dcloud.net.cn/uni-app-x/pkg/hello-uniappx.apk', //安装包下载地址或者通用应用市场地址
        edition_force: '1', //是否强制更新 0代表否 1代表是
        package_type: '0',//0是整包升级 1是wgt升级
        edition_name: '1.0.1' //后端返回的版本名称
    }
    uni.openDialogPage({
        url:`/uni_modules/yq-update-x/components/yq-update-x/yq-update-x?describe=${data.describe}&edition_url=${data.edition_url}&edition_force=${data.edition_force}&package_type=${data.package_type}&edition_name=${data.edition_name}`
    })
},

前言,一般来说,后台都需要有一个app的版本管理系统

app的版本管理系统 app的版本管理系统

项目使用说明 最重要!!!

  • 注意!!!后端返回数据要求 字段如下
data:{
    // 版本更新内容 富文本
    describe: '<span>1、修复已知问题</span><br/><span>2、优化用户体验</span>', 
    edition_url: '', //apk下载地址或者应用市场地址  安卓应用市场 market://details?id=xxxx 苹果store itms-apps://itunes.apple.com/cn/app/xxxxxx
    edition_force: 0, //是否强制更新 0代表否 1代表是
    package_type: 1, //0是整包升级(apk或者appstore或者安卓应用市场) 1是wgt升级
    edition_issue:1, //是否发行  0否 1是 为了控制上架应用市场审核时不能弹出热更新框
    edition_number:100, //版本号 最重要的manifest里的版本号 (检查更新主要以服务器返回的edition_number版本号是否大于当前app的版本号来实现是否更新)
    edition_name:'1.0.0',// 版本名称 manifest里的版本名称
    edition_silence:0, // 是否静默更新 0代表否 1代表是
}

后端注意!!!

edition_number传这个参数是为了解决部分用户app长期不使用,第一次打开服务器查到的版本是最新的是wgt包,但是之前app有过整包更新,如果直接更新最新wgt的话,会出现以前的整包添加的原生模块或者安卓权限无法使用,所以后端查询版本必须返回大于当前edition_number版本的最新的整包apk地址或者是应用市场地址,如果没有大于edition_number的整包,就返回最新的wgt包地址就行。

  • 前端示例代码 或者根据实际业务修改 如果需要自动检测新版本,建议写在App.vue的onShow中
onShow() {
            //获取服务器的版本号
            uni.request({
                url: 'http://127.0.0.1:8088/edition_manage/get_edition', //示例接口
                data: {
                    edition_type: uni.getSystemInfoSync().appId,
                    version_type: uni.getSystemInfoSync().platform, //android或者ios或者harmonyos
                    edition_number: uni.getSystemInfoSync().appVersionCode// 打包时manifest设置的版本号 
                },
                success: (res) => {
                    //判断后台返回版本号是否大于当前应用版本号 && 是否发行 (上架应用市场时一定不能弹出更新提示)
                    if (Number(res.data.data.edition_number) > Number(uni.getSystemInfoSync().appVersionCode) && res
                        .data.data.edition_issue == 1) {
                            const data = res.data.data;
                            uni.openDialogPage({
                                url:`/uni_modules/yq-update-x/components/yq-update-x/yq-update-x?describe=${data.describe}&edition_url=${data.edition_url}&edition_force=${data.edition_force}&package_type=${data.package_type}&edition_name=${data.edition_name}`
                            })

                    }
                }

            })
        },

常见问题汇总!!!

app上传地址:个人建议开通unicloud的阿里云按量付费,方便、便宜,apk或者wgt包直接上传到云存储就行。

1、调试请打包自定义基座测试,否则uni.getSystemInfoSync().platform获取到的可能不是android或者ios或者harmonyos,会导致无法更新

2、进度条不显示,但可以正常安装,原因:1、下载链接为内网链接,内网链接无法监听下载进度,请更换为外网链接 2、后端设置http文件下载设置content-length

3、进度条显示,下载apk完成后,安卓不会自动弹出安装页面,原因:可能是离线打包未添加安卓安装权限,请添加以下权限或者使用云打包

<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

4、app内下载apk时会跳转外部下载,原因:安卓apk下载链接必须为.apk结尾,如果不是.apk结尾,就会跳转外部下载(比如应用市场链接)。

有鼓励,更有动力,如果您认为这个插件帮到了您的开发工作,麻烦给个五星好评鼓励一下,有能力的也可以小小赞赏一下,感谢支持。

隐私、权限声明

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

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

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

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问