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的 ...
随机推荐
- ios开发之--MJRefresh上拉加载的时候,tableview会向上偏移
1,出现这种情况的原因: 这个应该是UITableView最大的改变.我们知道在iOS8引入Self-Sizing之后,我们可以通过实现estimatedRowHeight相关的属性来展示动态的内容, ...
- js 获取ISO-8601格式时间字符串的时间戳
function getTimeStamp(isostr) { var parts = isostr.match(/\d+/g); return new Date(parts[0]+'-'+parts ...
- IOS 通过脚本自动打包工具 webfrogs/xcode_shell
博文转载至 http://www.2cto.com/kf/201506/408346.html ios 开发通过xcode 打包其实效率不是太高,所以就有人,用shell 写了一个,自动打包,发邮件, ...
- 原:Myeclipse10+Egit+bitbucket实现版本控制
1.首先在https://bitbucket.org注册账号,建立仓库(repository),这部分有问题的可以看https://confluence.atlassian.com/display/B ...
- c++ 用new创建二维数组~创建指针数组【转】
#include <iostream> using namespace std; void main() { //用new创建一个二维数组,有两种方法,是等价的 //一: ] = ][]; ...
- namespace main
c++程序运行的入口是::main 如果把main放到某个命名空间中,则系统就无法找到入口. 所以就有了为了测试功能的tools和test,其中没有命名空间.
- Qt编写的RTSP播放器+视频监控(vlc版本)
几天写了个ffmpeg版本,今天特意抽空改写个vlc版本,之前vlc播放视频后,被接管了不能识别到鼠标,需要重新编译vlc源码得到支持鼠标消息的版本. /*** vlc视频播放类 作者:feiyang ...
- HTML - 网页特殊字符大全(转)
原文地址请跳转:https://blog.csdn.net/Iversons/article/details/78996776
- CSS学习之定位
CSS相对定位 设置为相对定位(relative)的元素会偏移某个距离,元素仍保持其未定位前的形状,他原本所占的空间仍然保留 相对定位是一个非常容易掌握的概念,如果对一个元素进行相对定位 ...
- 配置Mac漂亮的Shell--Iterm2+OhMyZSH+Agnoster
安装包管理器 首先当然是解决包管理的问题,Mac下面是Homebrew的天下了 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubuserco ...