利用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版本升级的更多相关文章

  1. 小白学jquery Mobile《构建跨平台APP:jQuery Mobile移动应用实战》连载四(场景切换)

    作为一款真正有使用价值的应用,首先应该至少有两个页面,通过页面的切换来实现更多的交互.比如手机人人网,打开以后先是进入登录页面,登录后会有新鲜事,然后拉开左边的面板,能看到相册.悄悄话.应用之类的其他 ...

  2. 白学jquery Mobile《构建跨平台APP:jQuery Mobile移动应用实战》串行4(场景变化)

    作为一个真正的利用价格值应用,首先,你应该至少有两页,通过切换页面来实现很多其他互动.比如手机人人网,首先,打开后进入登录页面,将有登录后,新的东西.然后拉左侧面板.你可以看到相册.私人信息.像其他应 ...

  3. Cordova开发App入门之创建android项目

    Apache Cordova是一个开源的移动开发框架.允许使用标准的web技术-HTML5,CSS3和JavaScript做跨平台开发. 应用在每个平台的具体执行被封装了起来,并依靠符合标准的API绑 ...

  4. 几款移动跨平台App开发框架比较

    整理目前流行的跨平台WebApp开发技术的特点,仅供参考. 每个框架几乎都包含以下特性: 使用 HTML5 + CSS + JavaScript 开发 跨平台重用代码 丰富的UI库 提供访问设备原生A ...

  5. [Android教程] Cordova开发App入门(一)创建android项目

    前言 Apache Cordova是一个开源的移动开发框架.允许使用标准的web技术-HTML5,CSS3和JavaScript做跨平台开发. 应用在每个平台的具体执行被封装了起来,并依靠符合标准的A ...

  6. 用React Native编写跨平台APP

    用React Native编写跨平台APP React Native 是一个编写iOS与Android平台实时.原生组件渲染的应用程序的框架.它基于React,Facebook的JavaScript的 ...

  7. 【转】几款移动跨平台App开发框架比较

    原文地址:https://www.cnblogs.com/songxingzheng/p/6482697.html 整理目前流行的跨平台WebApp开发技术的特点,仅供参考. 每个框架几乎都包含以下特 ...

  8. 小白学phoneGap《构建跨平台APP:phoneGap移动应用实战》连载五(使用PhoneGap获取设备信息)

    除了能够将HTML页面打包成可以直接安装运行的APP外,PhoneGap的一个最大优势在于可以通过JavaScript调用设备来访问设备上的硬件信息,从而实现一些原本只有依靠原生SDK才能够达到的目的 ...

  9. Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一)

    基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于Visual Studio 安装 Xamarin 扩展的跨Android.iOS 和 Windows的 ...

随机推荐

  1. WPF导航总结

    使用导航的目的是从一个页面进入到另一个页面.无论是预先决定的线性顺序(向导)还是基于层次的用户驱动程序(大部分网站的形式),或者动态生成的路径,主要有3种方法实现:调用Navigate方法,使用Hyp ...

  2. MySQL存储过程的异常处理

    阅读目录:存储过程的异常处理 定义异常处理 单一异常处理程序 continue exit 多个异常处理程序 关于错误编号和SQLSTATE码 使用3个处理程序 忽略某一异常的处理 异常处理的命名 异常 ...

  3. 【LeetCode OJ】Median of Two Sorted Arrays

    题目链接:https://leetcode.com/problems/median-of-two-sorted-arrays/ 题目:There are two sorted arrays nums1 ...

  4. iOS - 代码规范的提示

    我们在些程序时会发现苹果里面有好多非常好的提示 比如: 1.每次SDK升级后 一些方法的方法已经过时了,这时候会给你提示描述该方法已经过期(作用:1.兼顾老版本 2.给开发者一个提示) 2.有时候项目 ...

  5. Android学习之SeekBar(控制wav音频的声音)

    使用SeekBar调节声音 SeekBar控件其实就是一个高级点的进度条,就像我们在听歌,看电影用的播放器上的进度条一样,是可以拖动的,可以改变进度的一个进度条控件! SeekBar常用属性: and ...

  6. IOS设计模式第九篇之备忘录模式

    版权声明:原创作品,谢绝转载!否则将追究法律责任. 备忘录模式捕获和具体化对象的内部状态.换句话说,它可以节省你的东西后来,这种外部状态可以恢复在不违反封装; 也就是说,私人数据是私有的. 怎么用备忘 ...

  7. 【cs229-Lecture12】K-means算法

    上课内容: 无监督学习: K-means聚类算法 混合高斯模型 jensen不等式(用于推导出EM算法的一般形式) EM(Expectation Maximization)算法(最大期望算法) K-m ...

  8. 【cs229-Lecture2】Gradient Descent 最小二乘回归问题解析表达式推导过程及实现源码(无需迭代)

    视频地址:http://v.163.com/movie/2008/1/B/O/M6SGF6VB4_M6SGHJ9BO.html 机器学习课程的所有讲义及课后作业:http://pan.baidu.co ...

  9. 计算完成率 SQL

    计算完成率 SQL ,), ,) ) AS XX_完成率

  10. Android应用的自动升级、更新模块的实现(转)

    我们看到很多Android应用都具有自动更新功能,用户一键就可以完成软件的升级更新.得益于Android系统的软件包管理和安装机制,这一功能实现起来相当简单,下面我们就来实践一下.首先给出界面效果: ...