164 lines
5.8 KiB
JavaScript
164 lines
5.8 KiB
JavaScript
//#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
|
||
|
||
|
||
|