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),前后台约定,版本号使用“<a href= "http://semver.org/" target= "_blank" rel= "noopener nofollow" >语义化版本</a>”。如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; }); } }
版本比较后,有新版本就在浏览器中跳转到指定地址下载。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具