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的 ...
随机推荐
- js中对象的深度复制
// 对象的深度复制 cloneObj(oldObj) var cloneObj = function (obj) { var newObj = {}; if (obj instanceof Arra ...
- ios开发之--通过通知监听textfield的输入状态,判断按钮的状态
第一步: _rightBtn = [UIButton buttonWithType:UIButtonTypeCustom]; _rightBtn.frame = CGRectMake(kWidth - ...
- 【GIS】postgres(postgis) --》nodejs+express --》geojson --》leaflet
一.基本架构 1.数据存储层:PostgreSQL-9.2.13 + postgis_2_0_pg92 2.业务处理层:Nodejs + Express + PG驱动 3.前端展示层:Leaflet ...
- 在 Linux 使用 GCC 编译C语言共享库
对任何程序员来说库都是必不可少的.所谓的库是指已经编译好的供你使用的代码.它们常常提供一些通用功能,例如链表和二叉树可以用来保存任何数据,或者是一个特定的功能例如一个数据库服务器的接口,就像MySQL ...
- Mysql错误:Duplicate entry '127' for key 'PRIMARY'的解决方法
有时候真是挺幸运,正当我自以为是地认为掌握了某个知识点的时候,现实就会马上出现另外一个问题,让我知道之前的认知是不全面的. 正如我上篇博文中所述,如果一个自增字段达到了上限,而且继续向里面插入数据的话 ...
- 分布式实时日志系统(四) 环境搭建之centos 6.4下hbase 1.0.1 分布式集群搭建
一.hbase简介 HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java.它是Apache软件基金会的Hadoop项目的一部分,运行 ...
- Linux(Ubuntu)下如何解压 .zip 文件
安装解压缩软件 使用如下命令安装: sudo apt-get install p7zip-full 7zip,估计会比较熟悉. p7zip,是什么? 听说是 7zip 的 shell 封装. 解压 使 ...
- 原生js--鼠标事件
鼠标事件对象几个重要的属性: clientX 窗口坐标,加上垂直滚动可以得到文档纵坐标 clientY 窗口坐标,加上水平滚动可以得到文档横坐标 altKey boolean值,点击时是否按下了alt ...
- Android adb录制视频和截屏的dos脚本
以下是本人写的脚本,用于录制android手机视频.截屏 dos脚本文件名:screenrecord.bat @ECHO OFF CLS color 0a set SCREEN_RECORD_SAVE ...
- VScode首选项
首选项相关的设置: // 将设置放入此文件中以覆盖默认设置 { "workbench.iconTheme": "vscode-icons", "wor ...