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

转载于:https://www.cnblogs.com/yeyuqian/p/9910273.html

HBuilder的app自动更新相关推荐

  1. web app升级—带进度条的App自动更新

    带进度条的App自动更新,效果如下图所示:   技术:vue.vant-ui.5+ 封装独立组件AppProgress.vue: <template><div><van- ...

  2. Android App自动更新解决方案(DownloadManager)

    Android App自动更新解决方案(DownloadManager) 参考文章: (1)Android App自动更新解决方案(DownloadManager) (2)https://www.cn ...

  3. android通知栏应用程序更新,Android App自动更新之通知栏下载

    本文实例为大家分享了Android App自动更新通知栏下载的具体代码,供大家参考,具体内容如下 版本更新说明 这里有调用UpdateService启动服务检查下载安装包等 1. 文件下载,下完后写入 ...

  4. 安卓APP自动更新实现

    一.参考文献 简单实现安卓app自动更新功能 - 简书 安卓app自动更新功能完美实现_白云天的博客-CSDN博客_android 自动更新 Android 实现自动更新及强制更新功能_farley的 ...

  5. flutter APP自动更新

    flutter APP自动更新 前言 在pubspec.yaml中安装依赖 在main.dart文件中,初始化FlutterDownLoader 配置网络 在AndroidManifest.xml新增 ...

  6. Android如何实现APP自动更新

    先来看看要实现的效果图: 对于安卓用户来说,手机应用市场说满天飞可是一点都不夸张,比如小米,魅族,百度,360,机锋,应用宝等等,当我们想上线一款新版本APP时,先不说渠道打包的麻烦,单纯指上传APP ...

  7. 安卓APP自动更新功能实现

    安卓APP自动更新功能实现 前言 代码实现 前言 安卓App自动更新基本上是每个App都需要具备的功能,接下来介绍一下实现自动更新的步骤. 代码实现 App自动更新主要分为新版本检测.升级弹窗.下载升 ...

  8. Android APP 自动更新实现(适用Android9.0)

    Android App自动更新基本上是每个App都需具备的功能,参考网上各种资料,自己整理了下,先来看看大致的界面: 一.实现思路: 1.发布Android App时,都会生成output-metad ...

  9. android app 自动更新,AndroidUpdateDemo

    Android课程-App更新策略 @(Android) 第一节 课程介绍 概述 App更新是应用当中很常见的一个功能,基本上联网的app都应该具备这样的功能,对于更新迭代比较快速的产品,应用更新升级 ...

  10. android app 自动更新,app升级项目,新增强制更新(可静默),支持热更新(wgt),可支持高版本安卓系统...

    pure-updater 一个可以用的自动更新方案 经测试可支持 Android 9.0 已支持热更新 已支持静默的强制更新 如果您觉得还可以的话那就点个五星吧!谢谢! 已测试 android 8.0 ...

最新文章

  1. SpringBoot-(6)-日志SLF4j
  2. 会赚钱的人共有的特征,你是吗?
  3. P4396 [AHOI2013]作业 cdq分治
  4. MySQL 基础————常用数据类型
  5. 使用一个for循环将N*N的二维数组的所有值置1
  6. L1-040 最佳情侣身高差 (10 分)—团体程序设计天梯赛
  7. 简单介绍小系统车载中控导航上蓝牙模块
  8. QLabel(一) 内容换行
  9. c语言编程基础实验结果与分析,C语言实验指导1--C语言编程基础.doc
  10. 如何选择关键词以及关键词分析优化
  11. leetcode一些常用的工具的总结
  12. 行测技巧:十字交叉法解决比值混合问题
  13. CHD-5.3.6集群上sqoop安装
  14. Pycharm 更换皮肤和壁纸
  15. 带宽在计算机系统中的意义,带宽是什么意思?
  16. 【MATLAB】机器学习:决策树算法实验
  17. IPv4首部详细解释
  18. bzoj2534 Uva10829L-gap字符串(SA+lcp同bzoj2119)
  19. 看雪题库REVERSE的马到成功
  20. 再度升级:深入分析针对金融科技公司的Evilnum恶意软件及组件

热门文章

  1. SQL Server 全文搜索
  2. Infor 成功举办 Infor Next China
  3. 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-2 工程及程序构架介绍
  4. 「随机化快排」期望运行时间证明
  5. Atlas 调用web service
  6. ubuntu 14.04 設定hostname
  7. iOS 提升交互之根据多个UITextField的编辑状态改变按钮状态
  8. 瞬间几千次的重复提交,我用 SpringBoot+Redis 扛住了~
  9. 太傻了!下次二面再回答不好“秒杀系统“设计原理,我就捶死自己...
  10. 5 月编程语言排行榜:Java第一,R 跌出Top20,Python成最大赢家