const reslut = { // 接口返回的 关于新版本信息
version: "1.1.1", // 最新版本名称
versionCode: 111, // 最新版本号
name: "testApp.apk", // 安装包名称 不要有中文
description: "1、111\n2、更新\n3、优化功能", // 更新描述
forceType: 0, // 是否强制更新 0,否,1是
packageUrl: "http://xxx/testApp.apk", // 安装包下载地址
size: 33966115, // 安装包大小
}if(plus.runtime.versionCode< reslut.versionCode && reslut.forceType>0){
// 当前应用的版本号小于线上最新版本号,且需要强制更新,则需要再应用第一次打开的时候,弹出更新弹框,且弹框只能 有’立即更新‘和’退出应用‘按钮
}else if(plus.runtime.versionCode< reslut.versionCode && reslut.forceType<1){
// 当前应用的版本号小于线上最新版本号,且不需要强制更新 ,则可以做一个手动检查更新的按钮操作来实现应用的更新。弹出弹框,显示有’立即更新‘和’下次再说‘按钮
}
// 点击 ’立即更新‘ 则调用downloadAndInstall 方法
downloadAndInstall() { // 下载并安装
try {
// 更新下载
const fileName = `_downloads/${reslut.name}`;
const url = reslut.packageUrl
const dtask = plus.downloader.createDownload(url, { method: 'GET', filename: fileName });
dtask.start(); // 开启下载的任务
dtask.addEventListener('statechanged', (task) => {
// 给下载任务设置一个监听 并根据状态 做操作
switch (task.state) {
case 1:
// 正在下载
break;
case 2:
// 已连接到服务器
break;
case 3:
// 更新下载进度
const progress = parseInt(task.downloadedSize / reslut.size * 100);
break;
case 4:
plus.runtime.install(// 安装
plus.io.convertLocalFileSystemURL(task.filename),//下载到手机上的安装包路径
{ force: true },//是否强制安装
() => {
console.log('下载成功')
}, () => {
console.log('下载失败')
},
);
break;
}
});
} catch (err) {
console.log('安装失败')
}
}