功能描述:
整包更新和热更新组件,支持打开安卓、苹果应用市场,支持wgt静默更新,无感知
功能流程图:
安装指引:
1.复制uni_modules文件夹,放在项目根目录下
2.在pages.json中添加页面路径。(一定不要设置为pages.json中第一项)
"pages": [
// ……其他页面配置
{
"path": "uni_modules/h-uni-update/components/h-uni-update/h-uni-update",
"style": {
"disableScroll": true,
"app-plus": {
"backgroundColorTop": "transparent",
"background": "transparent",
"titleNView": false,
"scrollIndicator": false,
"popGesture": "none",
"animationType": "fade-in",
"animationDuration": 200
}
}
}
]
3.查看显示效果 (这里只是查看显示效)
如果有显示,则证明这个组件成功
// App.vue的onShow中查看效果 如果无法跳转 请在`pages.json`中添加页面路径,参照第二步
uni.navigateTo({
url: '/uni_modules/h-uni-update/components/h-uni-update/h-uni-update'
});
项目使用: 【很重要】
后端返回数据要求,字段如下: (必须和以下一致才可以使用)
data:{
// 版本更新内容
describe: '1. 修复已知问题<br>
2. 优化用户体验',
edition_url: '', //apk、wgt包下载地址或者应用市场地址 安卓应用市场 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_number:100 //版本号 最重要的manifest里的版本号 (检查更新主要以服务器返回的edition_number版本号是否大于当前app的版本号来实现是否更新)
edition_silence:0 // 是否静默更新 0代表否 1代表是
}
后端童鞋请注意:
edition_number传这个参数是为了解决部分用户app长期不使用,第一次打开服务器查到的版本是最新的是wgt包,但是之前app有过整包更新,如果直接更新最新wgt的话,会出现以前的整包添加的原生模块或者安卓权限无法使用,所以后端查询版本必须返回大于当前edition_number版本的最新的整包apk地址或者是应用市场地址,如果没有大于edition_number的整包,就返回最新的wgt包地址就行。
- 前端示例代码 或者根据实际业务修改 如果需要自动检测新版本,建议写在App.vue的onShow中
import silenceUpdate from '@/uni_modules/h-uni-update/js_sdk/silence-update.js' //引入静默更新
//#ifdef APP-PLUS
// 获取本地应用资源版本号
plus.runtime.getProperty(plus.runtime.appid, (inf) => {
//获取服务器的版本号
uni.request({
url: 'http://xxxxx', //示例接口
data: {
edition_type: plus.runtime.appid,
version_type: uni.getSystemInfoSync().platform, //android或者ios
edition_number: inf.versionCode // 打包时manifest设置的版本号
},
success: (res) => {
//res.data.xxx根据后台返回的数据决定(这里后端返回的是data),所以是res.data.data
//判断后台返回版本号是否大于当前应用版本号
if (Number(res.data.data.edition_number) > Number(inf.versionCode)) {
//如果是wgt升级,并且是静默更新 (注意: 如果是手动检查新版本,就不用判断静默更新,请直接跳转更新页,不然点击检查新版本后会没反应)
if (res.data.data.package_type == 1 && res.data.data.edition_silence == 1) {
//调用静默更新方法 传入下载地址
silenceUpdate(res.data.data.edition_url)
} else {
//跳转更新页面 (注意:如果pages.json第一页的代码里有一打开就跳转其他页面的操作,下面这行代码最好写在setTimeout里面设置延时3到5秒再执行)
uni.navigateTo({
url: '/uni_modules/h-uni-update/components/h-uni-update/h-uni-update?obj=' +
JSON.stringify(res.data.data)
});
}
} else {
// 如果是手动检查新版本 需开启以下注释
/* uni.showModal({
title: '提示',
content: '已是最新版本',
showCancel: false
}) */
}
}
})
});
//#endif