hbuilder热更新之入坑日记

先理一下热更新思路。

1.制作升级包,hbuilder打包wgt。

打包的版本号要高于目前的版本号,在manifest.json里去设置版本号,让后台放到服务器上

2.获取本地版本号

3.本地版本号和服务器上升级包的版本号对比,当升级包版本号高于本地版本号的时候,下载升级包,并且安装。

代码如下:

mui.plusReady(function() {

plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {

//获取本地版本号

var myVersion = wgtinfo.version;

console.log(myVersion);

//判断手机型号

var moble = plus.os.name;

console.log(plus.os.name);

mui.ajax({

type: 'GET',

url: '接口',

headers: {

Accept: 'application/json',

Authorization: 'Bearer ' + token

},

data: {

'platform': moble  //手机型号

},

dataType: 'jsonp',

success: function(msg) {

var msg = JSON.parse(msg);

console.log(msg)

if(msg.code == 0) {

//下载链接

var downlink = msg.data[0].downlink;

//后台返回的新的版本

var newVersion = msg.data[0].version;

//判断新版本是否比本地版本高

console.log(newVersion);

console.log(downlink);

if(newVersion >myVersion) {

mui.toast('检测到新版本,稍后自动更新');

var btnArray=['是','否'];

mui.confirm('是否下载更新?','title',btnArray,function(e){

if(e.index==0){

mui.toast('正在更新');

createDownload();  //下载

return false;

}

});

}else {

return false;

};

function createDownload() {

var dtask = plus.downloader.createDownload(downlink,{filename:'_downloads/'}, function(d, status) {

//下载完成

if(status == 200) {

mui.toast('下载成功'+d.filename);

console.log(d.filename);

installWgt(d.filename);//安装wgt

} else {

mui.toast('下载失败' + status);

}

});

dtask.start();

}

}

}

})

});

//更新应用资源,

function installWgt(path){

plus.nativeUI.showWaiting("安装更新文件...");

    plus.runtime.install(path,{},function(){

        plus.nativeUI.closeWaiting();   

      plus.nativeUI.alert("应用资源更新完成!",function(){

          plus.runtime.restart();

      });

  },function(e){

        plus.nativeUI.closeWaiting();   

      plus.nativeUI.alert("安装更新文件失败["+e.code+"]:"+e.message);

    });

}});

PS:新手入坑,这里要注意一下文件的下载路径。打升级包的时候注意manifest.json开放的权限,要与打包版本一致,否则会安装失败噢。

你可能感兴趣的:(hbuilder热更新之入坑日记)