使用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. Play-book格式写法

    Play-Book playbook的组成 play 角色(主机或者主机组) task 任务,演戏的动作 总结:playbook是有多个play组成,一个play有多个task:剧本由一个或者多个演员 ...

  2. 最简单的方法是使用标准的 Linux GUI 程序之一: i-nex 收集硬件信息,并且类似于 Windows 下流行的 CPU-Z 的显示。 HardInfo 显示硬件具体信息,甚至包括一组八个的流行的性能基准程序,你可以用它们评估你的系统性能。 KInfoCenter 和 Lshw 也能够显示硬件的详细信息,并且可以从许多软件仓库中获取。

    最简单的方法是使用标准的 Linux GUI 程序之一: i-nex 收集硬件信息,并且类似于 Windows 下流行的 CPU-Z 的显示. HardInfo 显示硬件具体信息,甚至包括一组八个的流 ...

  3. STM32的时钟系统RCC详细整理(转载)

    一.综述: 1.时钟源 在 STM32 中,一共有 5 个时钟源,分别是 HSI . HSE . LSI . LSE . PLL . ①HSI 是高速内部时钟, RC 振荡器,频率为 8MHz : ② ...

  4. STM8的AIR与STM32的Keil的指定地址存数据

    [经验分享]KE02在IAR和KEIL中以常量形式初始化EEPROM值一, 经验分享描述        写这篇经验分享的原因是,之前有一个客户,他希望在KE02的芯片中,不要出现使用EEPROM操作命 ...

  5. https 真的安全吗,可以抓包吗,如何防止抓包吗

    Android_interview github 地址 大家好,我是程序员徐公,加上实习,有五年中大厂经验.自荐一下,可以关注我的微信公众号程序员徐公 公众号程序员徐公回复黑马,获取 Android ...

  6. Python数模笔记-PuLP库(1)线性规划入门

    1.什么是线性规划 线性规划(Linear programming),在线性等式或不等式约束条件下求解线性目标函数的极值问题,常用于解决资源分配.生产调度和混合问题.例如: max fx = 2*x1 ...

  7. MySQL中InnoDB存储引擎的实现和运行原理

    InnoDB 存储引擎作为我们最常用到的存储引擎之一,充分熟悉它的的实现和运行原理,有助于我们更好地创建和维护数据库表. InnoDB 体系架构 InnoDB 主要包括了: 内存池.后台线程以及存储文 ...

  8. VMware vRealize Suite 8.4 发布 - 多云环境的云计算管理解决方案

    VMware vRealize Suite 8.4.0, Release Date: 2021-04-15 概述 VMware vRealize Suite 是一种多云环境的云计算管理解决方案,为 I ...

  9. AI框架类FAQ

    AI框架类FAQ 数据处理 问题:如何在训练过程中高效读取数量很大的数据集? 答复:当训练时使用的数据集数据量较大或者预处理逻辑复杂时,如果串行地进行数据读取,数据读取往往会成为训练效率的瓶颈.这种情 ...

  10. 快手推荐系统及 Redis 升级存储

    快手推荐系统及 Redis 升级存储  借傲腾 补上 DRAM 短板 内容简介: 作为短视频领域的领先企业,快手需要不断导入更先进的技术手段来调整和优化其系统架构,以应对用户量和短视频作品数量的爆炸式 ...