当前位置: 首页 > news >正文

uniapp中检查版本,提示升级app,安卓下载apk,ios跳转应用商店

uniapp中检查版本,提示升级app,安卓下载apk,ios跳转应用商店

##使用方法:
可以在app.vueonLaunch中调用appUpdate,打开app就会检测

onLaunch: function () {appUpdate()
},

完整代码如下:

//APP更新
import {queryAppVersion} from "@/apis/app";// 比较版本号:v1 < v2 返回 -1,v1 > v2 返回 1,相等返回 0
function compareVersions(v1, v2) {const v1Parts = v1.split('.').map(Number);const v2Parts = v2.split('.').map(Number);const maxLength = Math.max(v1Parts.length, v2Parts.length);for (let i = 0; i < maxLength; i++) {const part1 = v1Parts[i] || 0;const part2 = v2Parts[i] || 0;if (part1 > part2) return 1;if (part1 < part2) return -1;}return 0;
}async function checkAndroid(remoteRes) {let curVersion = uni.getAppBaseInfo().appVersionconst {appDownloadUrl, izForceFlush, appVersion} = remoteRes;if (compareVersions(appVersion, curVersion) === 1) {uni.showModal({title: "提示",content: "发现新版本,立即升级!",confirmText: "确定",cancelText: "取消",showCancel: izForceFlush !== '1',success: function (res) {if (res.confirm) {uni.showLoading({title: '下载中',mask: true});uni.downloadFile({url: appDownloadUrl, // 这个是最新版本apk包的地址success: (res) => {uni.hideLoading();if (res.tempFilePath) {plus.runtime.install(res.tempFilePath, {force: true}, _res => {uni.showToast({title: "更新成功,重启中",duration: 1500,});plus.runtime.restart();});} else {uni.showToast({title: "下载失败!",icon: "none",});}},fail(err) {uni.showToast({title: "下载失败!",icon: "none",});}})}}})}
}// TODO 你的appStore中的id
const appleId = '';async function checkIos(remoteRes) {const {iosForceFlush, iosAppVersion} = remoteRes;let curVersion = uni.getAppBaseInfo().appVersionuni.request({url: `http://itunes.apple.com/cn/lookup?id=${appleId}`,method: 'POST',success: (res) => {if (res.data.results && res.data.results.length) {const onlineVersion = res.data.results[0].version;// 服务器版本 > 当前版本 && appStore版本 > 当前版本,则提示更新if (compareVersions(onlineVersion, curVersion) === 1 && compareVersions(iosAppVersion, curVersion) === 1) {uni.showModal({title: '更新提示',content: '发现新版本,是否要更新?',showCancel: iosForceFlush !== '1',success(res) {if (res.confirm) {plus.runtime.launchApplication({action: `itms-apps://itunes.apple.com/cn/app/id${appleId}?mt=8`},function (e) {console.log(e.message);});}}})}}}});
}export default async function appUpdate() {// #ifdef APP-PLUSlet system = uni.getSystemInfoSync();const [err, res] = await queryAppVersion();if (err || !res.result) return;if (system.platform === 'ios') {checkIos(res.result);}if (system.platform === 'android') {checkAndroid(res.result);}// #endif
}

queryAppVersion是后台管理配置的版本信息

对比方法:

  • 安卓:比对当前版本和后台管理版本,提示更新
  • IOS:比对当前版本和后台管理版本 && 比对当前版本和应用商店版本,满足则提示更新
  • 同时也会校验后台管理是否配置强制更新,是的话,不显示关闭弹框按钮

相关文章:

  • 北斗导航 | 北斗卫星导航单点定位与深度学习结合提升精度
  • 什么是视频上墙
  • 深入剖析扣子智能体的工作流与实战案例
  • spring中的@bean注解详解
  • 在 Windows 系统上升级 Node.js
  • AI智能SEO关键词优化策略
  • Windows server:
  • 华为Pura X的智控键:让折叠机体验更上一层楼的设计
  • 安卓四大组件之ContentProvider
  • Git 核心命令学习总结
  • 在vscode终端中运行npm命令报错
  • 神经发育过程中大脑临界状态的图神经网络分析方法
  • 52.[前端开发-JS实战框架应用]Day03-AJAX-插件开发-备课项目实战-Lodash
  • 在Dify中创建自定义Drools工具
  • 【进阶】C# 泛型知识点整理归纳
  • LWIP中两种重要的数据结构pbuf和pcb详细介绍
  • systemctl 命令详解与常见问题解决
  • sgpt在kali应用
  • 腾讯云系统盘占满
  • SecureCRT配置端口转发-通过跳板机SSH到其他服务器
  • “70后”通化市委书记孙简已任吉林省政府领导
  • 手机号旧机主信用卡欠款、新机主被催收骚扰四年,光大银行济南分行回应
  • 解码人格拼图:探索心理健康的多维视角
  • “70后”女博士张姿卸任国家国防科技工业局副局长
  • 世卫发布预防少女怀孕新指南,呼吁终止童婚、延长女孩受教育时间
  • 嫦娥五号月球样品将借给这些国家机构