文档:
1.需在project.miniapp.json里勾选 install SDK
- 获取版本与比较
// 检测app版本更新
async getAppVersionFun() {
try {
// 延迟2秒后执行 //如果在app.js onLaunch生命周期中调用最好延迟一下处理
await new Promise(resolve => setTimeout(resolve, 2000));
// 获取当前版本
const accountInfo = wx.getAppBaseInfo();
// 最新的版本号
const newVersion = 网络请求获取目前线上最新的版本号;
// 当前系统的版本号
const currentVersion =accountInfo.host.appVersion || "1.0.0";
// 比较版本号
const isNewer = this.compareVersions(newVersion, currentVersion) > 0;
if (isNewer) {
// 如果有新版本,提示用户更新
wx.showModal({
title: '发现新版本',
content: '更新内容',
showCancel: true,
confirmText: '立即更新',
success: function (res) {
if (res.confirm) {
wx.showToast({
icon: "none",
title: '正在后台下载中',
})
wx.downloadFile({
//多端环境 最好设置一下timeout,好像app现在的默认超时时间才十秒钟?
url: data.data.androidUrl,
success(res) {
wx.miniapp.installApp({
filePath: res.tempFilePath,
success(res) {
console.log('install app success', res)
},
fail(res) {
console.log('install app fail', res)
}
})
},
fail(res) {
console.log('download apk fail', res)
}
}).onProgressUpdate((progress) => {
console.log(progress);
})
}
}
});
} else {
// 无最新版
}
} catch (error) {
wx.showToast({
icon: "none",
title: '获取版本信息出错',
});
}
},
compareVersions(v1, v2) {
const v1parts = v1.split('.').map(Number);
const v2parts = v2.split('.').map(Number);
for (let i = 0; i < v1parts.length; ++i) {
if (v2parts.length === i) {
return 1;
}
if (v1parts[i] === v2parts[i]) {
continue;
} else if (v1parts[i] > v2parts[i]) {
return 1;
} else {
return -1;
}
}
if (v1parts.length != v2parts.length) {
return -1;
}
return 0;
},