一、参考资料

二、代码

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. 软件project--作图

    软工学习进行了一个多月,但是真正静下心来学习也只是一周左右吧,这段时间里给自己印象最深刻的就是作图了, 机房收费系统我们是先进行的编码,后学习软件project对它来了一次回想性的文档编写. 刚開始当 ...

  2. Spring-ApplicationContext容器

    Spring ApplicationContext容器 ApplicationContext是spring中比较高级的容器.和BeanFactory类似,它可以加载配置文件中定义的bean,并将所有b ...

  3. python web框架 django 练习1 django 1.11版本

    django练习 在我自己项目里创建一个xiaoliu的文件夹 里面创建s1.py 文件 s1.py文件 里面写各种函数 from django.shortcuts import HttpRespon ...

  4. Sql order by 和 group BY 如何共同运用?

    如果声明了 GROUP BY 子句,输出就分成匹配一个或多个数值的不同组里. 如果出现了 HAVING 子句,那么它消除那些不满足给出条件的组. 如果声明了 ORDER BY 子句,那么返回的行是按照 ...

  5. Spring第一弹—-全面阐述Spring及轻重量级容器的划分

    Spring是什么? Spring是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP)的容器框架,它的主要目得是简化企业开发. IOC 控制反转 :   1 ...

  6. 查看Oracle latch _spin_count默认值

    查看Oracle latch  _spin_count默认值 SELECT X.KSPPINM NAME, Y.KSPFTCTXVL VALUE, Y.KSPFTCTXDF ISDEFAULT FRO ...

  7. k8s-离线安装k8s

    1.开始 目标 coreos的igniton.json有很强的可配置性,通过安装时指定集群配置的ignition.json, 安装完成后打开https://{{Master_IP}}:6443/ui直 ...

  8. windows安装redis, php5.5

    全套安装包地址 http://download.csdn.net/detail/whellote/9572797   解压 redis-2.2.5-win32-win64, 将里面的内容拷贝到j:/r ...

  9. JS传参中文乱码问题.NET

    前台js代码 window.location.href = "/product.aspx?id=2&title=" +encodeURIComponent(strtitle ...

  10. C#调用小票打印机

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...