一、参考资料

二、代码

1. HTML代码

<div class="mui-content">
<div class="mui-scroll">
<div class="login-img">
<img src="data:images/icon.png" width="20%" />
<p id="version">当前应用版本:</p>
</div>
</div> <ul class="mui-table-view check" id="check">
<li class="mui-table-view-cell">
<div class="updateProDiv">更新进度:
<progress value="" max="" id="proDownFile"></progress>
<span class="persent"></span>
</div>
<a href="#" id="update" class="mui-navigate-right">检查更新</a>
</li>
</ul> </div>

2. CSS代码

#version{margin-top:20px;font-size: 18px;}
.check{margin-top: 58%;}
.check li{padding: 16px 11px;}
.check a{font-size: 20px;}
.check p{font-size: 18px;margin-top: 5px;}
progress {border-radius: 2px;border-left: 1px #ccc solid;border-right: 1px #ccc solid;border-top: 1px #aaa solid;background-color: #eee;}
progress::-webkit-progress-bar {background-color: #d7d7d7;}
progress::-webkit-progress-value {background-color: #aadd6a;}
.updateProDiv {display: none;}

3. JS代码

<script src="js/jquery-1.8.3.min.js"></script>
<script>
var wgtVer=null;
function plusReady(){ // 获取本地应用资源版本号
plus.runtime.getProperty(plus.runtime.appid,function(inf){
wgtVer=inf.version;
version.innerHTML = '当前应用版本:'+wgtVer;
});
}
if(window.plus){
plusReady();
}else{
document.addEventListener('plusready',plusReady,false);
} var ver;
//休眠方法
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
mui('.mui-table-view-cell').on('click', '#update', function() {
plus.runtime.getProperty(plus.runtime.appid, function(inf) {
ver = inf.version;
console.log("当前应用版本:" + ver);
var url= app.baseurl+'index.php/api/other/version';
var client;
if(mui.os.ios) {client='ios';}
else{client='android';}
mui.ajax(url,{
data:{
version: ver,
client:client
},
dataType:'json',
type:'POST',
timeout:10000,
success:function(data){
if(data.status==1){
var btnArray = ['是', '否'];
mui.confirm('最新version是:' + data.version+',是否更新', '发现最新版本', btnArray, function(z) {
if (z.index == 0) {
console.log('确定');
$('.updateProDiv').css('display', 'block');
$('#update').css('display', 'none');
var dtask = plus.downloader.createDownload(data.url, {}, function(d, status) {
if (status == 200) {
clearInterval(i);
$('.persent').html("100%");
plus.nativeUI.toast("正在准备环境,请稍后!");
sleep(1000);
var path = d.filename;//_downloads yijietong.apk
console.log(d.filename);
$('#update').css('display', 'block');
$('.updateProDiv').css('display', 'none');
plus.runtime.install(path); // 安装下载的apk文件
} else {
alert('Download failed:' + status);
}
});
dtask.start();
var i = setInterval(function() {
var totalSize = dtask.totalSize;
var downloadedSize = dtask.downloadedSize;
$('#proDownFile').attr('value', downloadedSize);
$('#proDownFile').attr('max', totalSize);
console.log(dtask.downloadedSize);
console.log(dtask.totalSize);
}, 100); //1000为1秒钟
} else {
console.log('不确定');
return;
}
});
}
else{
alert(data.message);
}
},
error: function(xhr, type, errerThrown) {
mui.toast('网络异常,请稍候再试');
}
}); });
});
</script>

3. 接口代码

    public function version(){
$data = $_POST;
$m_version=M('versions');
$ret=$m_version->find();
if($ret['version']==$data['version']){
$this->ajaxReturn(array('status'=>0,'message'=>'当前版本已经是最新版!'));
}
else
{
$ret_data['status']=1;
$ret_data['version']=$ret['version'];
if($data['client']=='android'){
$ret_data['url']=sp_get_asset_upload_path('apk/yijietong.apk',true); }
else{ $ret_data['url']=sp_get_asset_upload_path('apk/yijietong.apk',true);}
$this->ajaxReturn($ret_data);
}
}

mui app在线更新的更多相关文章

  1. Android app 在线更新那点事儿(适配Android6.0、7.0、8.0)

    一.前言 app在线更新是一个比较常见需求,新版本发布时,用户进入我们的app,就会弹出更新提示框,第一时间更新新版本app.在线更新分为以下几个步骤: 1, 通过接口获取线上版本号,versionC ...

  2. MUI APP关于页面之间的传值,plusready和自定义事件

    最近在用MUI开发这个APP,发现有时候这个plusready不起作用,表现在,这个页面如果重复打开,这个plusready就进不去,然后上一个页面传过来的值,就没法接收了.这个经过MUI官方确认,是 ...

  3. MUI APP防止登陆页面出现白屏

    最近在用MUI开发APP,总体效果,在IOS上,是完美的,但是在低端的Android手机上,就会出现性能问题,我个人觉得最严重的是,就是首页,就是APP打开的第一个页面,在iOS上,由于性能高,所以, ...

  4. Mui --- app与服务器之间的交互原理、mui ajax使用

    1.APP与服务器之间的交互原理 app端(客户端)与服务端的交互其实理解起来和容易,客户端想服务器端发送请求,服务器端进行数据运算后返回最终结果.结果可以是多种格式: 1.text 文本格式 2.x ...

  5. mui APP 微信登录授权

    一.在微信平台上申请appid.appsecret. 二.app --> manifest.json-->SDK配置(填写申请好的appid和appsecret) 三.在登录页,点击微信登 ...

  6. mui APP与服务器之间的交互原理

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  7. mui app页面刷新问题 plus.webview.getWebviewById("").reload()

    /** * 放回指定页面,并且刷新指定页面 * @param {Object} pageId 指定页面ID */ mui.app_refresh=function(pageId){ if(!mui.i ...

  8. Layman H5+Webapp+MUI App 页面滑至到底部自动加载新的内容

    要点:使用jquery的scroll()方法实现,当用户滚动指定的元素时,会发生 scroll 事件 scroll 事件适用于所有可滚动的元素和 window 对象(浏览器窗口) scroll() 方 ...

  9. mui开发app之js将base64转图片文件

    之前我已经做过一个利用cropper裁剪并且制作头像的功能.如何在mui app中实现相册或相机获取图片后裁剪做头像请看另一篇博客:mui开发app之cropper裁剪后上传头像的实现 但是当时裁剪后 ...

随机推荐

  1. Linux登录欢迎图案

    命令提示符设置: export PS1='\n\[\e[37;1m[\]\[\e[31;1m\]\u\[\e[39;1m\]@\[\e[33;1m\]\H \[\e[34;1m\]\w\[\e[37; ...

  2. notepade++使用

    Notepad++也可以实现双视图/双窗口对比显示,目前最新版本(6.32)只能支持双视图显示,而且只能支持左右视图,希望后续版本能得到改进. 我们打开两个需要对比显示的源文件 默认的情况下是分成了两 ...

  3. The Cheap KD 10 is my best shoe yet

    10 years of anything is fairly huge Cheap KD 10, but adding something as great as Flyknit causes it ...

  4. Linux系统——本地yum仓库安装

    一.yum仓库概述 yum是基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无需繁琐地一次次下载.安装. 二.yum仓库安装的方式 ...

  5. PKU 2155 Matrix(裸二维树状数组)

    题目大意:原题链接 题意很简单,就不赘诉了. 解题思路: 使用二维树状数组,很裸的题. 二维的写起来也很方便,两重循环. Add(int x,int y,int val)表示(x,y)-(n,n)矩形 ...

  6. XDU 1011

    解法1:TLE #include<stdio.h> int main() { long long n; //freopen("in.txt","r" ...

  7. 从u-boot的编译结果中提取include目录

    ac@DESKTOP-BJ1MJGM:~/u-boot-2019.01/spl$ arm-linux-gnueabihf-objdump -g u-boot-spl | awk '/The Direc ...

  8. 这几天添加ccbi 出现的问题

    父类是一个ccbi...在父类的onNodeLoaded 里面添加子类的ccbi ... 出现了父类为空的情况...获取不到时间轴..动画为空... 需要在父类的onEnter里面写添加子类的ccbi ...

  9. js 空数组 空对象判断

    js 空数组是true还是false   1 2 var arr = new Array(); // 或 var arr = []; 我们知道,初始化后,即使数组arr中没有元素,也是一个object ...

  10. git删除本地分支和删除远程分支

    引言: 切换分支的时候命令打错了,git checkout 后面没有跟分支名,结果git status,很多delete的文件,直接冒冷汗,git add ,commit 之后发现本地与远程确实是删除 ...