当我们打包成APP安装到安卓用户端后,如果说每一次都需要去手动发送安装包到QQ或者WX,是不是很麻烦呢,要是设想,每次打开APP能够自动检测更新就好了(这里提供的是 版本号检测方法 自动更新的方式 下次再补)
一、思路
将APP上传至服务器,服务器可以写成一个接口,APP每次启动的时候,都全局请求一次接口。接口返回版本号以及最新版本的下载链接。 我们得到这个版本号是接口返回的。所以我们还需要手动在APP打包的时候,在全局定义一个固定死的变量,比如
let appVerson = 'v1.2.5.0'
以上这样我们就能在APP每次启动,都拿代码中的appVerson去和接口中的版本号进行匹配
二、产生的问题
由于一些版本号的格式是'v1.2.5.0'里面有英文加数字加小点。而直接判断,是会因为JS的解析规则导致一些错误的,并不会太标准。所以我们需要封装成一个方法,将数字单独取出来进行大小判断
三、函数封装
//检测版本号
class IsMaxVserson {
constructor(versonOld, versonNew) {
this.versonOld = '';
this.versonNew = '';
}
VsersonFlag(verson) {
if (this.versonOld != '' && this.versonNew != '') {
return Number(verson.split('').map(res => {return Number(res)}).filter(res => {return isNaN(res) != true}).join(''));
}
}
isVserson(versonOld, versonNew) {
this.versonOld = versonOld;
this.versonNew = versonNew;
if (this.VsersonFlag(versonOld) == this.VsersonFlag(versonNew)) {
return {
type: false,
title: '已是最新版'
}
} else {
return this.VsersonFlag(versonOld) < this.VsersonFlag(versonNew) ? {
type: true,
title: '检测到最新版'
} : {
type: false,
title: '服务器版本过低'
}
}
}
};
四、用法
调用,首先new一下这个方法得到实例
let verSonFlag = new IsMaxVserson();
接收两个参数 第一个参数旧版本号,第二参数,新版本号(接口返回)
let versonTypeFlag = verSonFlag.isVserson(''旧版本号,'新版本号' );
最终会返回来一个结果 输出versonTypeFlag
会显示版本号对比的最终结果
结果是true或者false
true代表是不相等的 可以进行更新
false代表已经是最新版 不需要更新
网友评论