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

uni-app App版本更新

效果图:

       

前言

在移动应用开发中,确保用户能够及时更新到最新版本是非常重要的。本文将介绍如何在 uni-app 中实现 App 整包更新功能,并提供相关代码示例以帮助理解。

代码实现

2.1 引入模块

首先,我们需要引入用于处理更新的模块(App.vue文件里面-如下图):

import appUpdate from '@/uni_modules/leruge-app-update/js_sdk/leruge-app-update.js';

引入地址:@/uni_modules/leruge-app-update/js_sdk/leruge-app-update.js文件

gitee地址:app_document: App小功能文件模块

2.2 定义更新函数

     这段代码是一个接口请求(看不明白的可以看去主页看一下接口封装:https://blog.csdn.net/weixin_46166771/article/details/135764183?spm=1001.2014.3001.5501)

async loadData() {const that = this;// 获取应用的版本信息plus.runtime.getProperty(plus.runtime.appid, async function (wgtinfo) {try {// 调用接口检查更新const res = await that.$request({url: myApi.appUpdate, //引入接口文件method: 'GET',data: {version: wgtinfo.version},});console.log(res);// 如果返回结果为200,说明有新版本if (res.code == 200) {const updateInfo = {platform: 'android', // 更新平台updateContent: '更新提示,检测到最新版本', // 更新提示内容downUrl: res.result, // 下载链接force: false, // 是否强制更新mainColor: 'FF5B78' // 主色调};// 执行更新appUpdate(updateInfo);}} catch (e) {// 错误处理console.log(`这个接口错误:${myApi.appUpdate}`, e);} finally {// 可以在这里执行一些清理或结束操作}});
}

2.3 代码解析

2.3.1 获取版本信息

我们使用 plus.runtime.getProperty 方法获取当前应用的版本信息。这对于后续的更新检查至关重要,因为它帮助我们识别用户当前的应用版本。

plus.runtime.getProperty(plus.runtime.appid, async function (wgtinfo) { // ... });
2.3.2 发起更新请求

如果服务器返回状态码 200,说明有新版本可供更新。此时,我们构建更新信息对象 updateInfo,并调用 appUpdate 函数开始更新流程。

if (res.code == 200) {const updateInfo = {platform: 'android', // 更新平台updateContent: '更新提示,检测到最新版本', // 更新提示内容downUrl: res.result, // 下载链接force: false, // 是否强制更新mainColor: 'FF5B78' // 主色调};appUpdate(updateInfo);
}

App.vue文件全部代码

<script>import Vue from 'vue'import myApi from '@/utils/app.js' //调用接口使import appUpdate from '@/uni_modules/leruge-app-update/js_sdk/leruge-app-update.js'export default {onLaunch: function() {this.loadData()  //更新app控制},methods: {async loadData() { // 热更新const that =thisplus.runtime.getProperty(plus.runtime.appid,async function(wgtinfo) {try {const res = await that.$request({url: myApi.appUpdate,method: 'GET',data: {version:wgtinfo.version},});console.log(res)if (res.code == 200) {const updateInfo = {platform: 'android',updateContent: '更新提示,检测到最新版本',downUrl: res.result,force: false,mainColor: 'FF5B78'}appUpdate(updateInfo)}} catch (e) {// 失败执行console.log(`这个接口错误:${myApi.goodsList}`)} finally {// 销毁执行}})	},}}
</script><style lang="scss">/*每个页面公共css */</style>

http://www.lryc.cn/news/447628.html

相关文章:

  • Python Web 与低代码/无代码平台的深度融合
  • js 如何监听 body 内容是否改变
  • python: 数字类型的一些函数
  • MapReduce学习与理解
  • Animal objDog = new Dog()和 Dog objDog = new Dog()的区别
  • springboot引入netty
  • PWM基础与信号控制
  • nvm,一款nodejs版本管理工具
  • 数据处理与统计分析篇-day11-RFM模型案例
  • 【PostgreSQL】PostgreSQL数据库允许其他IP连接到数据库(Windows Linux)
  • 通义千问:让我的编程工作效率翻倍的秘密武器
  • 2.Seata 1.5.2 集成Springcloud-alibaba
  • python 图像绘制问题: 使用turtle库绘制蟒蛇
  • 大模型分布式训练并行技术(七)-自动并行
  • 网络安全等级保护 | 规范企业网络系统安全使用 | 天锐股份助力等保制度落地
  • Springboot使用redis,以及解决redis缓存穿透,击穿,雪崩等问题
  • pve 命令开启关闭虚拟机
  • 【达梦数据库】临时表的使用测试
  • 【GUI设计】基于Matlab的图像去噪GUI系统(8),matlab实现
  • 【计算机科学导论】
  • 【C++】I/O流的使用介绍
  • 深度学习:(八)深层神经网络参数与流程
  • `pattern = r“(\d+)(CNY|JPY|HKD|EUR|GBP|fen|cents|sen|eurocents|pence)“
  • 宝塔面板部署雷池社区版教程
  • 【击败100%】258. 各位相加
  • 【alist】宝塔面板docker里的alist默认admin无法登录
  • 【击败100%】1281. 整数的各位积和之差
  • Flink基本概念和算子使用
  • Kafka 3.0.0集群部署教程
  • 昇思MindSpore进阶教程-格式转换