• HBuilder的app自动更新


    hbuilder自动跟新思路:首先获取到当前版本号,对比需要更新版本号,是否一致;否:开始更新

    var wgtVer = null;

    function plusReady() {
    // Android处理返回键
    plus.key.addEventListener('backbutton', function() {
    if(confirm('确认退出?')) {
    plus.runtime.quit();
    }
    }, false);

    // 获取本地应用资源版本号
    plus.runtime.getProperty(plus.runtime.appid, function(inf) {
    wgtVer = inf.version;
    console.log("当前应用版本:" + wgtVer);
    checkUpdate();
    });
    }
    if(window.plus) {
    plusReady();
    } else {
    document.addEventListener('plusready', plusReady, false);
    }

    var checkUrl = "1.0.5"; //版本号从服务器获取
    function checkUpdate() {
    plus.nativeUI.showWaiting("检测更新版本...");
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
    switch(xhr.readyState) {

    //4完成
    case 4:
    plus.nativeUI.closeWaiting();
    if(xhr.status == 200) {200//ok  
    console.log("检测更新成功:" + xhr.responseText);
    var newVer = checkUrl; //xhr.responseText
    if(wgtVer && newVer && (wgtVer != newVer)) {
    downWgt();
    } else {
    plus.nativeUI.alert("已是最新版,无需更新!");
    }
    } else {
    console.log("检测失败!" + xhr.status + "。。。" + xhr.readyState);
    plus.nativeUI.alert("检测失败!");
    }
    break;
    default:
    break;
    }
    }
    xhr.open('GET', checkUrl);
    xhr.send();
    }

    //下载

    var Url = hturl + "APK/H5EC81A1A_HBGJ.apk"; /*下载页,资源路径*/
    function downWgt() {
    var cfi = confirm("是否下载新的安装包?");
    if(cfi == true) {
    plus.nativeUI.showWaiting("正在更新软件,请稍后...");
    var dtask = plus.downloader.createDownload(Url, {}, function(d, status) { /*wode.html可以默认不用改,留着就行了*/
    console.log(Url)
    if(status == 200) {
    console.log("成功:" + d.filename);
    open(d.filename); // 打开下载地址
    installWgt(d.filename);
    } else {
    console.log("打开下载页面失败!");
    plus.nativeUI.alert("打开下载页面失败!");
    }
    plus.nativeUI.closeWaiting();
    });

    //下载事件监控
    dtask.addEventListener("statechanged", function(task, status) {
    if(!dtask) {
    return;
    }
    switch(task.state) {
    case 0:
    console.log("未初始化!");
    break;
    case 1:
    console.log("开始下载!");
    break;
    case 2:
    console.log("连接到服务器!");
    break;
    case 3:
    console.log("接收数据!");
    break;
    case 4:
    console.log("下载完成!");
    break;
    }
    });
    dtask.start();
    }
    else {

    }
    }

    //安装

    function installWgt(path) {
    plus.nativeUI.showWaiting("安装wgt文件...");
    plus.runtime.install(path, {}, function() {
    plus.nativeUI.closeWaiting();
    console.log("安装wgt文件成功!");
    plus.nativeUI.alert("应用资源更新完成!", function() {
    plus.runtime.restart();
    });
    }, function(e) {
    plus.nativeUI.closeWaiting();
    console.log("安装wgt文件失败[" + e.code + "]:" + e.message);
    plus.nativeUI.alert("安装wgt文件失败[" + e.code + "]:" + e.message);
    });
    }

     plus.downloader.createDownload官网讲解:http://www.html5plus.org/doc/zh_cn/downloader.html

  • 相关阅读:
    指针加减法运算的“定义域”
    将main()进行到底
    带命令行参数的main函数的误解[到处转载的垃圾]
    亡羊补牢还是越错越远——“C99允许在函数中的复合语句中定义变量”
    会错意表错情,搭错车上错床——“度日如年”的故事及“feof()”的故事
    狗屁不通的《C语言详解:什么是表达式、语句、表达式语句?》
    已知两边长求三角形面积
    用驴子拖宝马——怎样滥用结构体
    糟蹋好题——魔方阵问题
    怎样建立链表并同时造成内存泄露
  • 原文地址:https://www.cnblogs.com/yeyuqian/p/9910273.html
Copyright © 2020-2023  润新知