APP版本自动更新
前端接口调用获取服务器项目版本号
$.ajax({
type: 'POST',
url: url + 'api/user/get_version',
data: '',
dataType: 'json',
timeout: 3000,
async: false,
success: function(data) {
//update_ksd(data.data)
if(data.data.user_version === data.data.version){
return false;
}else{
var vv = ismobile();console.log(vv)
if(vv == 1){
console.log(data.data.apk)
update_ksd(data.data.apk)
}else{
console.log(data.data.ios)
update_ksd(data.data.ios)
}
}
}
})
php获取版本号接口
config.php配置文件
'VERSION'=>
[
'apk'=> ['update'=>true,'version'=>'2.0.6','url'=>'http://xiaodishen.ekeli.cn/uploads/H5C63E0E6_0921094109.apk'],
'ios'=> ['update'=>true,'version'=>'2.0.6','url'=>'itms-services://?action=download-manifest&url=https://xiaodishen.ekeli.cn/uploads/manifest.plist']
]
//获取版本号
public function get_version(){
$data = config('VERSION');
$data['version'] = $data['apk']['version'];
$data['update'] = $data['apk']['update'];
$data['url'] = $data['apk']['url'];
$this->response('查询成功',200,$data);
}
判断平台
/**
* [isMobile 判断平台]
* @param test: 0:iPhone 1:Android
*/
function ismobile(){
var u = navigator.userAgent, app = navigator.appVersion;
if(/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))){
if(window.location.href.indexOf("?mobile")<0){
try{
if(/iPhone|mac|iPod|iPad/i.test(navigator.userAgent)){
return '0';
}else{
return '1';
}
}catch(e){}
}
}else if( u.indexOf('iPad') > -1){
return '0';
}else{
return '1';
}
};
对比版本号,确认是否更新
function update_ksd(data) //跨域请求后的回调函数
{
var new_json = data;
if(new_json.update) //如果是自动更新,则判断版本号
{
$.ajax({
type: "get",
url: "manifest.json",
async: true,
data: '',
async: false,
dataType: 'text',
success: function(res) {
var data = res.split('version');
data = data[1].split('}');
data = data[0].split('{');
data = data[1].split('name');
data = data[1].split(',');
console.log(data)
var r = /\d+/g;
data = data[0].match(r);
version = data.join('')
var new_version = new_json.version.replace(/\./g, '');
localStorage.setItem('version', data.join('.'));
console.log(new_version + '新版本' + version);
if(new_version > version) //比对版本号
{
mui.plusReady(function() {
plus.nativeUI.confirm("应用版本已更新,请下载更新", function(event) {
if(event.index == 1) {
plus.nativeUI.showWaiting('更新中,请等待...');
download(new_json.url); //更新函数,在下面
var UIApplication = plus.ios.import("UIApplication");
var sharedApplication = UIApplication.sharedApplication();
var NSURL = plus.ios.import("NSURL");
sharedApplication.openURL(NSURL.URLWithString('http://qkl.chs518.com/download/download.html'));
plus.ios.deleteObject(sharedApplication);
}
}, '', ['取消', '确认']);
});
}
},
error: function() {
}
});
}
}
下载安装
function download(url) {
//console.log(url);
//创建下载管理对象
var dtask = plus.downloader.createDownload(url, {}, function(d, status) {
// 下载完成
if(status == 200) { //下载成功后的回调函数
plus.nativeUI.toast("下载成功,准备安装" + d.filename);
//console.log(d.filename)
//安装程序,第一个参数是路径,默认的下载路径在_downloads里面
plus.runtime.install(d.filename, {}, function() {
localStorage.removeItem('uid');
plus.nativeUI.toast('安装成功');
}, function() {
plus.nativeUI.toast('安装失败');
});
plus.nativeUI.closeWaiting();
} else {
alert("下载失败 " + status);
}
});
//dtask.addEventListener( "statechanged", onStateChanged, false );
dtask.start(); //开始下载任务
}