2025-04-16 02:11:26 +01:00

164 lines
5.8 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//#ifdef APP-PLUS
let config = {
updateType: "",
version: "",
title: "升级,有新版本需要更新,请点击升级",
con: "升级功能",
downUrl: "", //请设置下载apk地址,ios设置苹果商店的连接地址;
hidCancelbtn: false, //可选 隐藏取消按钮
btnBgColor: "#22bb77", //可选 按钮颜色
updateBtnText: "立即升级", //可选, 升级按钮文字,
verCode: "", //最新apk版本号 可选 只有Android整包升级可以设置这个参数 ,可以避免用户取消安装apk时,重复下载问题,如果不传的话,apk将会重新下载
hidBackBtn: true, // 只有android整包更新才可以控制后台更新按钮是否显示热更新是不显示这个按钮的
topImgBg: plus.io.convertLocalFileSystemURL("_www/static/") + "/upgrade/ug2.png"
};
let update = function() {
if (config.updateType == "1") {
//整包升级
let oldAppVer = plus.runtime.version; //获取本地
if (config.version>oldAppVer) { //验证本地版本号
updatePackage();
}
}
if (config.updateType == "2") {
//wgt升级
plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {
//第一步要获取本地的wgt版本号这是异步方法;
let oldwgtver = wgtinfo.version;
if (config.version>oldwgtver) { //验证本地版本
updateWgt();
}
});
}
if (config.updateType == "3") {
//wgt静默升级
plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {
//第一步要获取本地的wgt版本号这是异步方法;
let oldwgtver = wgtinfo.version;
if (config.version>oldwgtver) { //验证本地版本
uni.downloadFile({
url: config.downUrl,
success: (downloadResult) => {
//console.log(downloadResult)
if (downloadResult.statusCode === 200) {
plus.runtime.install(downloadResult.tempFilePath, {
force: false
}, function() {
console.log('install success...');
plus.runtime.restart();
}, function(e) {
console.error('install fail...');
});
}
}
});
}
});
}
};
let updatePackage = function() {
//app版本号获取方式
//plus.runtime.version; 与服务器的版本进行比较;
const upDater = uni.requireNativePlugin("CL-UpDater");
//console.log(defaultvar.title);
let options = {
title: config.title,
con: config.con,
downUrl: config.downUrl, //请设置下载apk地址,ios设置苹果商店的连接地址;
hidCancelbtn: config.hidCancelbtn, //可选 隐藏取消按钮
btnBgColor: config.btnBgColor, //可选 按钮颜色
updateBtnText: config.updateBtnText, //可选, 升级按钮文字,
verCode: config.verCode, //最新apk版本号 可选 只有Android整包升级可以设置这个参数 ,可以避免用户取消安装apk时,重复下载问题,如果不传的话,apk将会重新下载
hidBackBtn: config.hidBackBtn, // 只有android整包更新才可以控制后台更新按钮是否显示热更新是不显示这个按钮的
topImgBg: config.topImgBg //可选 除非需要自定义头部logo否则不需要传;
}
//必需提供下载地址;
upDater.startUpdate(options, () => {
console.log("弹框关闭了");
});
};
let updateWgt = function() {
//注意服务器的热更新版本号必需大于本地wgt版本号
//http://192.168.50.201/update.wgt,
let that = this;
//第一步要获取本地的wgt版本号
const upDater = uni.requireNativePlugin("CL-UpDater");
let options = {
title: config.title,
con: config.con,
downUrl: config.downUrl,
hidCancelbtn: config.hidCancelbtn, //可选 隐藏取消按钮,
btnBgColor: config.btnBgColor,
updateBtnText: config.updateBtnText, //升级按钮文字,
topImgBg: config.topImgBg //除非需要自定义头部logo否则不需要传;
}
//第一步创建文件下载路径,并创建文件;
plus.io.requestFileSystem(plus.io.PUBLIC_DOWNLOADS, function(fobject) {
//设置文件下载根路径;
let rootPath = fobject.root.fullPath;
upDater.wgtUpdate(options, rootPath, result => {
if (result) {
var pathNew = plus.io.convertAbsoluteFileSystem(result);
console.log(pathNew);
plus.runtime.install(pathNew, {
force: false
}, function() {
//进行重新启动;
plus.runtime.restart();
}, (e) => {
uni.showToast({
title: '安装升级包失败' + JSON.stringify(e),
icon: 'none'
})
});
}
}, () => {
console.log("弹框关闭了");
});
})
};
let appUpgrade = function(param){
config.updateType = param.updateType;
config.version = param.version;
config.con = param.con;
const pf = uni.getSystemInfoSync().platform;
if(pf=='android') config.downUrl = uni.$u.http.config.baseURL+param.androidUrl;
if(pf=='ios') config.downUrl = param.iosUrl;
config.hidCancelbtn = param.isForceUpdate==1?true:false
update();
}
export { appUpgrade }
//#endif
//#ifdef MP
let mpUpgrade = function(){
const updateManager = uni.getUpdateManager();
updateManager.onCheckForUpdate(function (res) {
// 请求完新版本信息的回调
if(res.hasUpdate){
updateManager.onUpdateReady(function (res) {
uni.showModal({
title: '更新提示',
content: '新版本已经准备好,是否重启应用?',
success(res) {
if (res.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate();
}
}
});
});
}
});
}
export { mpUpgrade }
//#endif