直接上代码吧,你竟然搜到了我的文章就应该知道了,为什么要热更新

//app热更新下载
//假定字符串的每节数都在5位以下
function toNum(a) {
//也可以这样写 var c=a.split(/\./);
var c = a.split('.');
var num_place = ["", "0", "00", "000", "0000"],
r = num_place.reverse();
for(var i = 0; i < c.length; i++) {
var len = c[i].length;
c[i] = r[len] + c[i];
}
var res = c.join('');
return res;
} var btn = ["确定升级", "取消"];
//获取app系统更新[是否手动点击获取更新]
function appUpdate(Index) {
console.log('appUpdate');
mui.plusReady(function() {
plus.runtime.getProperty(plus.runtime.appid, function(inf) {
ver = inf.version + '';
console.log('ver:' + ver);
var client;
var ua = navigator.userAgent.toLowerCase();
if(/iphone|ipad|ipod/.test(ua)) { //苹果手机
mui.ajax({
type: "get",
dataType: 'json',
url: "https://itunes.apple.com/lookup?id=1462614850", //获取当前上架APPStore版本信息
data: {
id: 1462614850 //APP唯一标识ID
},
contentType: 'application/x-www-form-urlencoded;charset=UTF-8',
success: function(data) {
console.log('data:' + JSON.stringify(data));
var resultCount = data.resultCount;
for(var i = 0; i < resultCount; i++) {
var normItem = data.results[i].version;
console.log('normItem:' + normItem)
if(normItem > ver) {
var _msg = "发现新版本:V" + normItem;
//plus.nativeUI.alert("发现新版本:V" + normItem);
mui.confirm(_msg, '升级确认', btn, function(e) {
if(e.index == 0) { //执行升级操作
document.location.href = 'https://itunes.apple.com/cn/app/%E5%AD%A9%E5%84%BF%E6%AC%A2/id1462614850?mt=8'; //上新APPStore下载地址
}
});
return;
}
}
if(ismanual) {
mui.toast('当前版本号已是最新');
}
return;
}
});
} else if(/android/.test(ua)) {
mui.ajax(ip + "APIVApp/SelectVApp", {
data: {
apkVersion: ver,
},
dataType: 'json',
type: 'get',
timeout: 10000,
success: function(data) {
console.log('data:' + JSON.stringify(data))
console.log(toNum(ver))
if(toNum(data[0]._vname) > toNum(ver)) {
var _msg = "发现新版本:V" + data[0]._vname;
mui.confirm(_msg, '升级确认', btn, function(e) {
if(e.index == 0) { //执行升级操作
downWgt();
}
});
} else {
console.log(Index);
if(Index) {
mui.toast('当前版本号已是最新');
}
return;
}
},
error: function(xhr, type, errerThrown) {
mui.toast('网络异常,请稍候再试');
}
});
}
});
});
} // 下载wgt文件
function downWgt() {
var wgtUrl = ip + "app/H5750CDB5.wgt";
plus.nativeUI.showWaiting("下载更新文件...");  
plus.downloader.createDownload(wgtUrl, {
filename: "_doc/update/"
}, function(d, status) {    
if(status == 200) {       
console.log("下载更新文件成功:" + d.filename);      
installWgt(d.filename); //安装wgt包
    
} else {      
console.log("下载失败!");      
plus.nativeUI.alert("下载失败!");    
}    
plus.nativeUI.closeWaiting();  
}).start();
} function installWgt(path) {  
plus.nativeUI.showWaiting("安装更新文件...");  
plus.runtime.install(path, {}, function() {    
plus.nativeUI.closeWaiting();    
console.log("安装更新文件成功!");    
plus.nativeUI.alert("应用资源更新完成!", function() {      
plus.runtime.restart();    
});  
}, function(e) {    
plus.nativeUI.closeWaiting();    
console.log("安装更新文件失败[" + e.code + "]:" + e.message);    
plus.nativeUI.alert("安装更新文件失败[" + e.code + "]:" + e.message);    
if(e.code == 10) {    
alert('请清除临时目录');    
}  
});
}

H5 App实现热更新,不需要重新安装app的更多相关文章

  1. ios app 实现热更新(无需发新版本实现app添加新功能)

    目前能够实现热更新的方法,总结起来有以下三种 1. 使用FaceBook 的开源框架 reactive native,使用js写原生的iOS应用 ios app可以在运行时从服务器拉取最新的js文件到 ...

  2. ios app 实现热更新(无需发新版本号实现app加入新功能)

    眼下可以实现热更新的方法,总结起来有下面三种 1. 使用FaceBook 的开源框架 reactive native,使用js写原生的ios应用 ios app能够在执行时从server拉取最新的js ...

  3. Egret打包App Android热更新(4.1.0)

    官网教程:http://developer.egret.com/cn/github/egret-docs/Native/native/hotUpdate/index.html 详细可看官网教程,我这里 ...

  4. [Android教程] Cordova开发App入门(二)使用热更新插件

    前言 不知各位遇没遇到过,刚刚发布的应用,突然发现了一个隐藏极深的“碧油鸡(BUG)”,肿么办!肿么办!肿么办!如果被老板发现,一定会让程序员哥哥去“吃鸡”.但是想要修复这个“碧油鸡”,就必须要重新打 ...

  5. ReactNative 告别CodePush,自建热更新版本升级环境

    微软的CodePush热更新非常难用大家都知道,速度跟被墙了没什么区别. 另外一方面,我们不希望把代码放到别人的服务器.自己写接口更新总归感觉安全一点. so,就来自己搞个React-Native A ...

  6. iOS第三方类库JSPatch(热更新)

    ---------------------------------------------------------------------------------------------------- ...

  7. webpack 配置 (支持 React SCSS ES6 编译打包 和 模块热更新 / 生成SourceMap)

    1.首先是目录结构 |-node_modules/ #包文件 |-build/ #静态资源生成目录 |-src/ #开发目录 |-js/ |-index.js #入口文件 |-app.js #Reac ...

  8. React Native之code-push的热更新(ios android)

    React Native之code-push的热更新(ios android) React Native支持大家用React Native技术开发APP,并打包生成一个APP.在动态更新方面React ...

  9. Cordova - 实现热更新 !

    Cordova版本:8.0.0 更新APP平台:Android 操作系统:Windows Cordova的热更新,作用是把www内的变动部分更新到APP中,实现主程序不动,完成更新!!这个热更新功能, ...

随机推荐

  1. Django基础day01

    后端(******) 软件开发结构c/s http协议的由来 sql语句的由来 统一接口统一规范 HTTP协议 1.四大特性 1.基于TCP/IP作用于应用层之上的协议 2.基于请求响应 3.无状态 ...

  2. go 利用chan的阻塞机制,实现协程的开始、阻塞、返回控制器

    一.使用场景 大背景是从kafka 中读取oplog进行增量处理,但是当我想发一条命令将这个增量过程阻塞,然后开始进行一次全量同步之后,在开始继续增量. 所以需要对多个协程进行控制. 二.使用知识 1 ...

  3. 6. abp中的拦截器

    abp拦截器基本定义 拦截器接口定义: public interface IAbpInterceptor { void Intercept(IAbpMethodInvocation invocatio ...

  4. 原生JS实现动画函数的封装

    封装了一个JS方法,支持元素的基本动画:宽.高.透明度...等,也支持链式动画和同时运动. 获取元素的属性的函数并进行了兼容性处理: function getStyle(obj, attr) { if ...

  5. 数据库学习笔记day01+day02

    --表示系统时间select sysdate from dual --表是关系型数据库的基本结构--表是二维的,由行和列组成--行称为记录,列称为字段 --创建第一张表create table hw( ...

  6. Vue.js实现大文件分片md5断点续传

    背景 根据部门的业务需求,需要在网络状态不良的情况下上传很大的文件(1G+).其中会遇到的问题:1,文件过大,超出服务端的请求大小限制:2,请求时间过长,请求超时:3,传输中断,必须重新上传导致前功尽 ...

  7. iOS 裁剪工具

    下载 demo和工具下载链接SPClipTool 使用说明 [[SPClipTool shareClipTool] sp_clipOriginImage:pickerImage complete:^( ...

  8. PMBOK 指南 第二章 项目运行环境

    2.1概述 事业环境因素(EEF)源于项目外部(往往企业外部) 组织过程资产(OPA)源于企业内部 2.2 事业环境因素 项目团队不能控制 2.2.1 组织内部的事业环境因素 组织文化.结构和治理 设 ...

  9. 剑指offer-39:平衡二叉树

    题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 解题思路 在做这题是,我第一反应就是遍历两次二叉树.第一遍记录每个节点的深度,并将信息存入HashMap中,key = node,value ...

  10. 【STM32H7教程】第34章 STM32H7的定时器应用之TIM1-TIM17的PWM实现

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第34章       STM32H7的定时器应用之TIM1-T ...