更新记录
1.0.6(2024-05-15) 下载此版本
优化示例项目
1.0.5(2024-05-14) 下载此版本
优化文档
1.0.4(2024-05-14) 下载此版本
优化文档
查看更多平台兼容性
Vue2 | Vue3 |
---|---|
× | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
HBuilderX 4.15 app-uvue | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 |
---|---|---|---|
× | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × |
yq-update-x uniappx 更新
uniappx的uvue版本 整包更新组件 wgt暂不支持(等官方支持) 支持打开安卓、苹果应用市场 支持app内部下载
vue或者nvue的版本在这个地址,插件地址
- ui图是采用uniapp官方更新组件的ui,如不满足需要,可自行替换
- 一键式检查更新,同时支持整包升级与wgt资源包更新 支持打开安卓自带的应用市场和苹果appstore
- 好看、实用、可自定义的客户端提示框
- 支持强制更新,无法退出
- 支持覆盖原生tabar
安装指引
-
在插件市场打开本插件页面,在右侧点击
使用 HBuilderX 导入插件
,选择要导入的项目点击确定 -
在index.vue的onShow中查看安卓更新的显示效果 (注意:这里只是查看显示效果)
选项式api写法
<template>
<view>
<image src="../../static/logo.png"></image>
<yq-update-x ref="yqUpdatex"></yq-update-x>
</view>
</template>
<script lang="uts">
export default {
data() {
return {
yqUpdatex: null as YqUpdateXComponentPublicInstance | null,
}
},
// 这里是onShow方法 不知道为啥,有时候插件市场就显示不出来
onShow() {
// 通过组件 ref 属性获取组件实例, 组件标签名首字母大写,驼峰+ComponentPublicInstance
this.yqUpdatex = this.$refs['yqUpdatex'] as YqUpdateXComponentPublicInstance
this.yqUpdatex!.show()
},
methods: {
}
}
</script>
组合式api写法
<template>
<view>
<image src="../../static/logo.png"></image>
<yq-update-x ref="yqUpdatex"></yq-update-x>
</view>
</template>
<script setup lang="uts">
import{ ref } from 'vue'
// 这里引入的onShow在插件市场老是显示不出来,自己写的时候加上
import { onShow } from '@dcloudio/uni-app'
const yqUpdatex = ref< YqUpdateXComponentPublicInstance | null>(null)
// 这里的onShow方法在插件市场老是显示不出来,自己写的时候加上
onShow(()=>{
yqUpdatex.value!.show()
})
</script>
前言,一般来说,后台都需要有一个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包地址就行。
- 前端示例代码 或者根据实际业务修改 如果需要自动检测新版本,建议写在index.vue的onShow中
<template>
<view class="content">
<yq-update-x ref="yqUpdateX" @show="show" @close="close" :describe="describe" :edition_url="edition_url" :edition_force="edition_force" :package_type="package_type" :edition_name="edition_name"></yq-update-x>
</view>
</template>
<script lang="uts">
export default {
data() {
return {
yqUpdatex: null as YqUpdateXComponentPublicInstance | null,
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:"2.0.1"
}
},
// 这里是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
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) {
//如果是wgt升级,并且是静默更新 (注意!!! 如果是手动检查新版本,就不用判断静默更新,请直接跳转更新页,不然点击检查新版本后会没反应)
if (res.data.data.package_type == 1 && res.data.data.edition_silence == 1) {
// TODO 官方暂不支持wgt更新
} else {
this.describe = res.data.xxxx
this.edition_url = res.data.xxxx
this.edition_force = res.data.xxxx
this.package_type = res.data.xxxx
this.edition_name = res.data.xxxx
this.yqUpdatex!.show()// 显示更新弹窗
}
} else {
// 如果是手动检查新版本 需开启以下注释
/* uni.showModal({
title: '提示',
content: '已是最新版本',
showCancel: false
}) */
}
}
})
},
methods: {
show(){
console.log('显示了');
uni.hideTabBar()
},
close(){
console.log('隐藏了');
uni.showTabBar()
}
}
}
</script>
常见问题汇总!!!
热更新制作wgt包的方法:1、修改manifest.json版本名称和版本号,必须大于当前版本。2、点击菜单的发行——原生App-制作应用wgt包
app上传地址:个人建议开通unicloud的阿里云按量付费,方便、便宜,apk或者wgt包直接上传到云存储就行。
1、调试请打包自定义基座测试,否则uni.getSystemInfoSync().platform获取到的可能不是android或者ios,会导致无法更新
2、进度条不显示,但可以正常安装,原因:99%的情况是因为下载链接为内网链接,内网链接无法监听下载进度,请更换为外网链接
3、进度条显示,下载apk完成后,安卓不会自动弹出安装页面,原因:可能是离线打包未添加安卓安装权限,请添加以下权限或者使用云打包
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />