使用huilder 开发app  ,实现app升级功能

1、

            var wgtVer = null; //用于获取系统当前版本
var currentversion = null; //用于获取系统最新版本
var installpackegename = null; //用于存储安装包名称
//检测手机版本
(function($, doc) {
$.plusReady(function() {//获取手机版本号
plus.runtime.getProperty(plus.runtime.appid, function(inf) {
wgtVer = inf.version + ""; //获取当前app的版本号
checkUpdate(); });

      });
      }(mui, document));


    function checkUpdate() {
              //获取服务器的最新版本,在后台使用一个表来记录版本信息、安装包名称
$.ajax({
url: localStorage.getItem('server') + 'report_sysMainTableQuery4lyga',
type: 'post',
data:{} //已删除
timeout: 50000,
dataType: 'json', success: function(res) {
if(!res['Returnvalue'] && res['Rowscount'] > 0) {
currentversion = res['MyDataTable'][0]["最新版本"] + "";
installpackegename = res['MyDataTable'][0]["安装包名称"] + ""; var btn = ["是", "否"];
                    //直接判断老是不起作用,所以转换成为数值来判断了
currentversion = currentversion.replace(/\./g, '');
wgtVer = wgtVer.replace(/\./g, '');
if(currentversion > wgtVer) //比对版本号
{
mui.confirm("检测到新版本,是否更新", "更新应用", btn, function(e) {
if(e.index == 0) { //确定更新应用
var Url = localStorage.getItem('server1') + "APK/" + installpackegename; /*下载页,资源路径*/
var watiting = plus.nativeUI.showWaiting("开始");
plus.downloader.createDownload(Url, {
filename: "_doc/update/"
}, function(d, status) {
if(status == 200) {
installWgt(d.filename); // 安装wgt包
} else {
console.log("下载wgt失败!");
plus.nativeUI.alert("下载wgt失败!");
}
plus.nativeUI.closeWaiting();
}).start(); } else {
return;
} })
} } }
});
}
installWgt方法:
                    function installWgt(path) {
plus.nativeUI.showWaiting("安装文件...");
plus.runtime.install(path, {}, function() {
plus.nativeUI.closeWaiting();
console.log("安装文件成功!");
plus.nativeUI.alert("应用资源更新完成!", function() {
plus.runtime.restart();
deleteysb(path);
}); }, function(e) {
plus.nativeUI.closeWaiting();
console.log("安装wgt文件失败[" + e.code + "]:" + e.message);
plus.nativeUI.alert("安装wgt文件失败[" + e.code + "]:" + e.message);
deleteysb(path);
});
} //删除安装包
function deleteysb(filename) {
plus.io.resolveLocalFileSystemURL(filename, function(entry) {
entry.remove();
mui.toast("删除安装包成功");
})
}

2、下载,升级的代码基本都一样,下载升级前要确认要下载的地址能不能访问。 服务通过iis发布,需要在iis配置中  MIME类型  添加wgt/application/widget  和 整包升级的 apk/application/vnd.android.package-archive

3、使用hbuilder 制作移动资源升级包,安装的时候如果提示:安卓在线升级时,manifest.json无修改却报-1229错误。()

如果没有用到maps模块,可以直接删除,再制作升级包就可以了。

hbuilder 开发app 自动升级的更多相关文章

  1. HBuilder开发APP自动登录时跳过"登录页面"

    刚接触开发公司APP项目,用HBuilder开发工具. manifest.json中的入口页面就是"登录页面",现在获取到自动登录状态是true,但是真机联调时"登录页面 ...

  2. HTML5进阶(二)HBuilder实现软件自动升级

    HBuilder实现软件自动升级 前言 移动APP开发好后需要实现软件自动升级功能,经过一番搜索,发现HBuilder具有"App资源在线升级更新"的功能,遂研究之. 经过一番测试 ...

  3. HTML5进阶(三)HBuilder实现软件自动升级(优化篇)

    HBuilder实现软件自动升级(优化篇) 前言 受前篇博客<HTML5进阶(二)HBuilder实现软件自动升级>(点击查看详情)的影响,测试过程中发现APP自动更新还是存在问题,第一次 ...

  4. HBuilder开发App教程04-最难搞定的是mui

    前言 前几篇说到一些HBuilder开发app的基础教程, 现在来说一下HBuilder开发app的难点,或者说是上手的难点, 就是mui, 如果你没有研究mui就贸然的上手HBuilder,那你的开 ...

  5. Hbuilder开发app实战-识岁03-文件上传

    前言 做app不得不谈的问题就是文件上传.用hbuilder开发app让上传变的非常easy. Uploader Uploader模块管理网络上传任务,用于从本地上传各种文件到server,并支持跨域 ...

  6. HBuilder开发App教程06-首页

    实战 前面几节基本是一些概念的普及, 正如前面提到的,本教程会以滴石作为范例进行解说, 有兴趣的能够先行下载体验一下.或者下载源代码研究下. 新建项目 打开HBuilder,在项目管理器中右键--新建 ...

  7. HBuilder开发App教程05-滴石和websql

    滴石 介绍 滴石是用HBuilder开发的一款计划类app. 用到HBuilder,mui.nativejs以及h5一些特性. 预期 眼下仅仅开发到todolist级别, 以后计划做成日计划,月计划, ...

  8. Hbuilder开发app实战-识岁06-face++的js实现【完结】

    前言 因为识岁app比較简单.所以这节就完结吧, 当然另一些能够优化完好的地方,可是个人兴趣不是非常大, 有想继续完好的,源代码在这里:https://github.com/uikoo9/shisui ...

  9. uniapp 证书 打包上线GooglePlay app自动升级

    uniapp Android证书 打包上线GooglePlay app自动升级 1.Android证书申请 要安装jdk并配置环境变量. keytool -genkey -alias android ...

随机推荐

  1. 实例:使用playbook实现httpd安装、配置、以及虚拟主机的配置

    一.安装环境配置 1.在控制节点给受控主机配置本地仓库文件 [root@ansible ~]# vim /etc/yum.repos.d/dvd.repo [AppStream] name=appst ...

  2. dpkg -S /usr/lib/mate-notification-daemon/mate-notification-daemon

    # dpkg -S /usr/lib/mate-notification-daemon/mate-notification-daemonmate-notification-daemon: /usr/l ...

  3. kvm虚拟化安装与部署(2)

    一.虚拟化VT开启确认 KVM 本身也有一些弱点,那就是相比裸金属虚拟化架构的 Xen . VMware ESX 和 HyperV , KVM 是运行在 Linux 内核之上的寄居式虚拟化架构,会消耗 ...

  4. shell基础之编译安装nginx

    本节新学知识:if 判断语句 1 #!/bin/bash 2 #检查环境 3 SESTATE=`getenforce` 4 if [ $SESTATE != "Disabled" ...

  5. 聊聊 Spring 的 XML Schema 扩展机制的使用方式

    前言 在当前Java生态,Spring算的上是最核心的框架,所有的开发组件想要得到大范围更便捷的使用,都要和Spring进行整合,比如我们熟知的Mybatis.Dubbo等,以及内部封装的各类组件包括 ...

  6. Mybatis3详解(十四)----Mybatis的分页

    1.前言 在前面学习mybatis的时候,会经常对数据进行增删改查操作,使用最多的是对数据库进行查询操作,但是前面都是简单的案例,所以查询的数据量不是很大,自然查询时没有任何压力,但是如果在实际的项目 ...

  7. [leetcode] 46. 全排列(Java)

    46. 全排列 这题我们可以借用31. 下一个排列写的nextPermutation函数来做,稍微改造一下即可 注意要先给nums排个序 class Solution { // 当没有下一个排列时re ...

  8. Go语言中的单例模式

    Go语言中的单例模式 在过去的几年中,Go语言的发展是惊人的,并且吸引了很多由其他语言(Python.PHP.Ruby)转向Go语言的跨语言学习者. Go语言太容易实现并发了,以至于它在很多地方被不正 ...

  9. Nginx限制访问速率和最大并发连接数模块--limit

    Nginx限制访问速率和最大并发连接数模块--limit Tengine版本采用http_limit_req_module进行限制 具体连接请参考 http://tengine.taobao.org/ ...

  10. 中国人工智能AI框架自主研发

    中国人工智能AI框架自主研发 中国AI界争相构建AI开源框架的背后,技术和业务层面的考量因素当然重要,但也不应忽视国家层面的政策支持.对于AI基础设施的建设,中国政府在<新一代人工智能发展规划& ...