应用升级介绍

Do平台的应用升级包含二种升级方式,一种是最常用的安装包的升级,另外一种是应用内升级。很显然第二种升级方式更灵活。

应用安装包升级

原生应用通常的升级方式就是这种,比如android的安装包是apk文件,ios的安装包是ipa文件。如果要升级,只能重新下载一个新的apk/ipa文件,然后安装覆盖旧的版本,基本流程如下:

  1. 调用do_Global.getVersion()方法检查当前应用的版本号
  2. 通过do_Http发送GET/POST请求升级服务端,请求当前应用的最新的版本号,这个服务端是开发者自己搭建,和Do平台无关。
  3. 比较这二个版本号,如果不一样,则调用do_External.openURL()方法使用操作系统带的浏览器打开下载应用的网页。在网页上下载安装新的应用覆盖旧的应用。

这里要注意的是:

  1. 如果要生成一个特定版本号的App,需要在应用配置-平台配置-版本的地方设置一下版本号,然后再打一个发布版本。
  2. 还有就是如果在新版本的应用里更新了一个组件的版本,或者增加了某个组件,应用安装包升级是必须的过程,这相当于功能的更新。不能使用应用内升级。
  3. iOS的app如果想发布到组件商店上,是不允许使用程序检测版本号来升级,只能用iOS自带的操作系统的升级管理。否则不能上Appstore。但是如果是用企业证书,不受这个限制。
    升级的过程比较简单,我们就不提供示例代码了。

应用内升级

应用内升级并不是Do平台的特有功能,但是Do平台使用应用内升级还是很方便的。应用内升级可以理解为增量升级,替换任何项目文件。

  1. 检查当前应用的版本号,这个版本号可能是从文件里读出来的,可能是从SQLite数据库读出来的,反正这个版本的读和写都是由用户来决定。
  2. 通过do_Http发送GET/POST请求升级服务端,请求当前应用的最新的版本号,这个版本号是指应用内源代码的版本号,服务端是开发者自己搭建,和Do平台无关,而且版本号的维护也是由开发者来决定。
  3. 比较这二个版本号,如果不一样,则调用do_Http.download方法下载升级包,通常是一个zip文件。
  4. 下载后,解压这个zip文件到data:// 下一个目录
  5. 利用do_App的update方法拷贝所有的最新文件拷贝到source:// 下对应的目录,覆盖旧的文件。并更新新的版本到文件或数据库。

这里要注意的是:

  1. 升级的页面只有再次打开才能看到变化,比如当前页面更新了,需要退出这个页面再打开才能看到变化。假如升级的是首页,则需要退出应用重新打开App了。
  2. 如果选择了代码加密,则更新的文件也必须是加密过,而且是同样的deviceone开发者账号下的同样的应用id。目前还没有提供一个方便的方式随意加密任何源代码,只能重新打包,再从打出的包扣出相应的加密过的代码。

参考一个示例Demo,主要的源代码如下:

var button = ui("do_Button_1");
button.on("touch", function() {
    upgrade();
});
function upgrade() {
    // 获取当前应用的版本号
    var current_version = storage.readFileSync("data://version.txt");
    // 获取服务端最新的版本号,并下载升级
    // 因为没有搭建一个真正的升级服务,所以先注释这一行且直接调用update方法
    // getLatestVersion(current_version);
    update("1.1", "data://update.zip");
}
// 从服务器上获取最新的版本号
function getLatestVersion(ver) {
    var http = mm("do_Http");
    http.method = "GET";
    http.url = "http://www.xxxx.com/getLatestVersion?current=" + ver;
    http.on("success", function(d) {
        // 服务端判断最新的版本不等于当前的版本就会返回一个最新版本和下载地址,否则返回空
        if (d) {
            // 开始下载最新zip
            download(d);
        } else
            nf.alert("当前版本已经是最新版本");
    });
    http.request();
}
// 从服务器上获取最新的升级包
function download(d) {
    var http = mm("do_Http");
    var zip = "data://update.zip";
    http.method = "POST";
    // d.downlaodURL是zip的下载url,d.version是最新的版本号
    http.url = d.downloadURL;
    http.on("success", function(d) {
        update(d.version, zip);
    });
    http.download(zip);
}
// 解压,然后覆盖旧的文件,然后更新本地版本号
function update(ver, zip) {
    storage.unzip(zip, "data://update", function(data) {
        // 这里可以拷贝文件,也可以拷贝目录
        app.update([ "data://update/test.ui", "data://update/test.ui.js" ],
                "source://view", function() {
                    nf.alert("升级完成");
                    storage.writeFile("data://version.txt", "1.1",function(){
                        app.closePage();
                    });
                });
    })
}

这个示例的下载参考这里

时间: 2024-10-18 14:40:02

应用升级介绍的相关文章

SequoiaDB版本在线升级介绍说明

1.前言 在SequoiaDB数据库发展过程中,基本保持每半年对外发行一个正式的Release版本.并且每个新发布的Release版本相对老版本而言,性能方面都有很大的提高,并且数据库也会在新版本中加入很多新的功能,希望能够提高数据库开发的易用性. 在SequoiaDB发展过程中,越来越多的开发者了解到它,并且对它发生兴趣.现在已经有越来越多的用户在学习.研究SequoiaDB,并且也有越来越多的企业用户在对SequoiaDB经过充分测试后,决定将SequoiaDB部署在企业的生产环境中,利用S

6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)

为了和SDK升级保持协议一致,花了两天时间实现了用LUA开发,MQTT+HTTP方式实现远程升级 安装Apache主要是为了实现通过HTTP下载资源 升级介绍: 1,用户点击检查更新时,APP用HTTP访问云端的更新信息,版本号,升级文件的位置,和这次升级的内容 2,APP通过MQTT把信息(版本号,升级文件的位置)发给设备,设备对比版本号以后把信息通过MQTT发给APP 3,APP根据设备返回的信息判断是不是需要升级,如果需要,弹出一个对话框(设备的版本号,云端的版本号,更新的内容),如果不需

selenium3.0 平台级自动化测试框架综合实战

第1章 课程介绍 本章整体介绍基于webdriver的自动化测试框架详情,主体分为外部框架及内部框架. 1-1 课程介绍 1-3 初探框架 1-4 初探自动化测试框架 1-5 自动化测试框架的设计原则 1-6 框架设计思想和设计模式 1-7 高级框架设计思想和设计模式 1-8 课后练习 第2章 Selenium3.0升级介绍 本章具体介绍3.0升级以及3.0与2.0比较,重点部分代码展示. 2-1 Selenium3.0升级介绍 2-2 Selenium3升级实战 第3章 TestNG高级使用

Golang modules 初探

今天天色刚刚亮起,起床看到golang 1.11正式发版了,有着两个重要的特性:modules和WebAssembly. 本博文只要说的是modules,congJava转golang的同学肯定是对golang的包管理充满了无奈之情,我也曾在博客中介绍过glide,也介绍过dep,现在我们再一次升级介绍modules. 什么是modules 现在都在说modules,那么它是什么? 到文档看看 Modules, module versions, and more: A module is a c

基于企业级证书的IOS应用打包升级功能介绍(类似于fir.im)

IOS应用程序升级流程介绍:IOS手机端应用程序需要升级时,打开服务器端html文件(本文为ucab.html文件)->点击在线安装->打开plist文件(本文中为ucab.plist文件)->plist文件中存储有应用程序升级包的地址.(本文为:http://192.168.1.126:8088/netcrm/ucab.ipa),这个地址是在打包时填写的Application URL值.通过升级包地址访问升级包,提示安装升级. 分步介绍: 一.准备工作 1.打包用的企业级证书mobil

企业IT管理员IE11升级指南【4】—— IE企业模式介绍

IE企业模式介绍 企业模式,运行在Windows8.1 Update和Windows7 Internet Explorer 11上的兼容模式,让网站使用一种模仿Internet Explorer 8的修改浏览器配置方式呈现,避免在旧版本的Internet Explorer上编写和测试的Web应用程序出现常见兼容性问题. Enterprise Mode Internet Explorer (“EmIE”) for Internet Explorer 11 改进了Internet Explorer

从vSphere 5.5升级到6之1-案例介绍

无论是操作系统还是应用软件,版本都是一直在更新的,新的系统及软件,会提供较多的功能,有的也会舍弃一些过时的内容,以适应当前的形式.所以,在我们当前的环境中,就存在一个名词"升级",这即包括硬件(例如服务器.存储.交换机.网络)的更新换代,也包括软件(操作系统.应用程序)的升级. 对于硬件的升级,在采用vSphere虚拟化之后,虚拟化主机及存储的更新相对就变的较为简单:在当前的vSphere数据中心中,添加新的存储与主机,使用VMotion,将正在运行的虚拟机,从旧的.性能较为低下的存储

企业IT管理员IE11升级指南【12】—— 兼容视图列表介绍

企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flash的支持 [3]—— IE11 新的GPO设置 [4]—— IE企业模式介绍 [5]—— 不跟踪(DNT)例外 [6]—— Internet Explorer 11面向IT专业人员的常见问题 [7]—— Win7和Win8.1上的IE11功能对比 [8]—— Win7 IE8和Win7 IE11对比

Nginx服务器 安装 与平滑升级详细介绍   简单使用1

#nginx -V (-V 可以显示出当时的标准,添加了什么模块) [[email protected] nginx-1.8.0]# ./configure --help |grep proxy --without-http_proxy_module        disable ngx_http_proxy_module --http-proxy-temp-path=PATH        set path to store http proxy temporary files --with-