cordova 跨平台APP版本升级
利用cordova+ionic开发好项目,之后就是打包发布,在这之前,还要做一个版本升级的小功能。
首先我们项目根目录里自然少不了配置:config.xml中

如图。version,我们以后每次升级APP就从这个wiget标签中读取version字段。
cordova已经给们提供了APP版本获取插件工具,cordova-plugin-appversion
通过插件获取到本地app的版本号,通过请求获取后台的版本号。然后比较。
function onReady() {
cordova.getAppVersion.getVersionNumber().then(function (version) {
});
Popup.waitLoad('正在检查是否有可更新版本');
CommonApi.getUpgradeVersionInfo(function (res) {
if (!res.success) {
throw new Error("获取应用版本号信息失败" + (res.retInfo ? res.retInfo : ""));
}
Popup.hideLoading();
var appVersion = res.data.dataObject.serverVersion;
var upgradeInfo = res.data.dataObject.upgradeInfo;
var url = res.data.dataObject.updateUrl;
console.log("platform is ios: " + ionic.Platform.isIOS());
//获取当前app版本信息
if (compareVersion(version,appVersion)) {
showUpdateConfirm(upgradeInfo, url, appVersion);
} else {
Popup.promptMsg('没有新版本可用', "更新提示");
}
}, {versionFlag: versionFlag});
}
};
比较函数
compareVersion(version,appVersion),前后台约定,版本号使用“语义化版本”。如x.y.z。前后台都用三个数被两个点隔开的方式。
/**
* 比较版本号
* @param localVersion 本地app版本号
* @param newVersion 服务器返回版本号
* @returns {boolean}
*/
function compareVersion(localVersion, newVersion) {
console.log("新版本 %s- 旧版本 %s", newVersion, localVersion);
if (typeof localVersion === 'string' && typeof newVersion === 'string'){
var localVersionArray = localVersion.split('.');
var newVersionArray = newVersion.split('.');
if(localVersionArray.length === newVersionArray.length){
for (var i = 0; i < localVersionArray.length; i++){
if(parseInt(newVersionArray[i]) > parseInt(localVersionArray[i])){
return true;
}else if(parseInt(newVersionArray[i]) > parseInt(localVersionArray[i])) {
return false;
}else {
continue;
}
}
return false;
}else {
Popup.loadMsg('版本号记录错误',500,function () {
return;
});
}
}else {
Popup.loadMsg('版本号记录错误',500,function () {
return;
});
}
}
版本比较后,有新版本就在浏览器中跳转到指定地址下载。
cordova 跨平台APP版本升级的更多相关文章
- 小白学jquery Mobile《构建跨平台APP:jQuery Mobile移动应用实战》连载四(场景切换)
作为一款真正有使用价值的应用,首先应该至少有两个页面,通过页面的切换来实现更多的交互.比如手机人人网,打开以后先是进入登录页面,登录后会有新鲜事,然后拉开左边的面板,能看到相册.悄悄话.应用之类的其他 ...
- 白学jquery Mobile《构建跨平台APP:jQuery Mobile移动应用实战》串行4(场景变化)
作为一个真正的利用价格值应用,首先,你应该至少有两页,通过切换页面来实现很多其他互动.比如手机人人网,首先,打开后进入登录页面,将有登录后,新的东西.然后拉左侧面板.你可以看到相册.私人信息.像其他应 ...
- Cordova开发App入门之创建android项目
Apache Cordova是一个开源的移动开发框架.允许使用标准的web技术-HTML5,CSS3和JavaScript做跨平台开发. 应用在每个平台的具体执行被封装了起来,并依靠符合标准的API绑 ...
- 几款移动跨平台App开发框架比较
整理目前流行的跨平台WebApp开发技术的特点,仅供参考. 每个框架几乎都包含以下特性: 使用 HTML5 + CSS + JavaScript 开发 跨平台重用代码 丰富的UI库 提供访问设备原生A ...
- [Android教程] Cordova开发App入门(一)创建android项目
前言 Apache Cordova是一个开源的移动开发框架.允许使用标准的web技术-HTML5,CSS3和JavaScript做跨平台开发. 应用在每个平台的具体执行被封装了起来,并依靠符合标准的A ...
- 用React Native编写跨平台APP
用React Native编写跨平台APP React Native 是一个编写iOS与Android平台实时.原生组件渲染的应用程序的框架.它基于React,Facebook的JavaScript的 ...
- 【转】几款移动跨平台App开发框架比较
原文地址:https://www.cnblogs.com/songxingzheng/p/6482697.html 整理目前流行的跨平台WebApp开发技术的特点,仅供参考. 每个框架几乎都包含以下特 ...
- 小白学phoneGap《构建跨平台APP:phoneGap移动应用实战》连载五(使用PhoneGap获取设备信息)
除了能够将HTML页面打包成可以直接安装运行的APP外,PhoneGap的一个最大优势在于可以通过JavaScript调用设备来访问设备上的硬件信息,从而实现一些原本只有依靠原生SDK才能够达到的目的 ...
- Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一)
基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于Visual Studio 安装 Xamarin 扩展的跨Android.iOS 和 Windows的 ...
随机推荐
- 5 -- Hibernate的基本用法 --4 3 JDBC连接属性
Hibernate需要进行数据库访问,因此必须设置连接数据库的相关属性.所有Hibernate属性的名字和语义都在org.hibernate.cfg.Environment中定义. 关于JDBC连接配 ...
- 一句话shell
作者:NetSeek1.删除0字节文件find -type f -size 0 -exec rm -rf {} \; 2.查看进程按内存从大到小排列ps -e -o "%C : %p : % ...
- 搭建ntp服务器
1.同步网络时间 先关闭掉ntp服务,使用ntpd同步网络时间. /etc/init.d/ntpd stop ntpdate 2.hk.pool.ntp.org 网络时间可以从http://www.p ...
- [Python] io 模块之 open() 方法
io.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True) 打开file ...
- inux跟踪线程的方法:LWP和strace命令
摘要:在使用多线程程序时,有时会遇到程序功能异常的情况,而这种异常情况并不是每次都发生,很难模拟出来.这时就需要运用在程序运行时跟踪线程的手段,而linux系统的LWP和strace命令正是这种技术手 ...
- apache下配置php环境
1. apache下载 http://httpd.apache.org/download.cgi 2. php下载 http://windows.php.net/download/ 3. 配置 apa ...
- codeforcess水题100道
之所以在codeforces上找这100道水题的原因是为了巩固我对最近学的编程语言的掌握程度. 找的方式在codeforces上的PROBLEMSET中过的题最多的那些题里面出现的最前面的10个题型, ...
- Hibernate系列之核心开发接口
一.概述 所有的hibernate应用中都会访问5个核心接口,它们分别是: Configuration:配置hibernate,创建SessionFactory对象 SessionFactory:初始 ...
- 转:桩模块 stub 和驱动模块 driver
迷惑我很久的stub的概念,今天终于看到觉得靠谱的了,原文地址:http://xyzhaoangela.blog.hexun.com/14208786_d.html 桩模块stub:集成测试前要为被测 ...
- thinkphp3.2 导航高亮显示
Controller $action = CONTROLLER_NAME."/".ACTION_NAME; //获取当前页面的‘控制器/操作方法’: $this->assig ...