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

uni-app打包apk实现自动更新

一、直接复制粘贴就可用(豪横)

app.vue文件里写

//app.vue里写
<script>export default {onShow: function() {console.log('App Show')},onHide: function() {console.log('App Hide')},onLaunch: function() {let appVersion = ''uni.getSystemInfo({success: function(e) {appVersion = e.platform}})let that = this;uni.request({url: 'http://xxx.xxx.xxx:3000/xxx/xxx', //获取版本号接口。method: "POST",header: {'custom-header': 'application/json;' //自定义请求头信息},success: (res) => {const arr1 = uni.getSystemInfoSync().appVersion.split('.');const arr2 = res.data.split('.')if (parseInt(arr2[2]) > parseInt(arr1[2])) {uni.showModal({title: "版本更新",content: '检测到有新版本,是否更新', //更新描述confirmText: '立即更新',cancelText: '稍后进行',success: (r) => {if (r.confirm) {//如果是安卓直接更新下载if (appVersion === 'android') {uni.showLoading({title: '正在下载,请稍后'})uni.downloadFile({// 存放最新安装包的地址url: 'http://xxx.xxx.xxx:3000/apk/xxx/xxx.apk',success: (downloadResult) => {uni.hideLoading();if (downloadResult.statusCode ===200) {uni.hideLoading();plus.runtime.install(downloadResult.tempFilePath, {force: false},function() {console.log('install success...');plus.runtime.restart();},function(e) {uni.hideLoading();console.error('install fail...');});}}});//如果是ios跳转到app store} else {//在App Store Connect中的App Store下的app信息,可找到appleIdlet appleId = plus.runtime.appidplus.runtime.launchApplication({action: `itms-apps://itunes.apple.com/cn/app/id${appleId}?mt=8`}, function(e) {uni.showToast({title: '打开应用商店失败'})console.log('打开应用商店失败: ' +e.message);});}} else if (res.cancel) {console.log('用户点击取消');}}})}},});},}
</script><style>/*每个页面公共css */
</style>

二、详解(复制粘贴行不通呢,就详细看看每行的注释,相信我,花费三分钟时间,比你点开一堆链接去一步一步排查好。嘿嘿!除非你想摸鱼)

<script>export default {onLaunch: function() {let appVersion = ''uni.getSystemInfo({   //获取当前的apk是安卓还是ios,success: function(e) {appVersion = e.platform    // console打印的值为android}})let that = this;uni.request({url: 'http://xxx.xxx.xxx:3000/xxx/xxx', //获取版本号接口。method: "POST",header: {'custom-header': 'application/json;' //自定义请求头信息},success: (res) => {//uni.getSystemInfoSync()返回的是apk包信息,uni自带,可自行打印查看.const arr1 = uni.getSystemInfoSync().appVersion.split('.');//arr2接口返回的版本信息(1.0.0),处理一下成数组。const arr2 = res.data.split('.')console.log(uni.getSystemInfoSync(), '这是uni.getSystemInfoSync()')console.log(arr1, '这是arr1')console.log(arr2, "这是arr2arr2")//parseInt(arr2[2]) > parseInt(arr1[2])我自己想偷懒,只校验最后一位版本号的大小,你要是想非常规矩校验版本号呢,就自己写写js逻辑,先判断第一位,在判断第二位,在判断第三位if (parseInt(arr2[2]) > parseInt(arr1[2])) {uni.showModal({title: "版本更新",content: '检测到有新版本,是否更新', //更新描述confirmText: '立即更新',cancelText: '稍后进行',success: (r) => {if (r.confirm) {//如果是安卓直接更新下载if (appVersion === 'android') {uni.showLoading({title: '正在下载,请稍后'})//这块用downloadFile下载最新的apk包,uni.downloadFile({// 存放最新安装包的地址url: 'http://xxx.xxx.xxx:3000/apk/xxx/xxx.apk',success: (downloadResult) => {uni.hideLoading();if (downloadResult.statusCode ===200) {uni.hideLoading();//plus.runtime.install这个是啥东西,别问,问了我也不知道,而且运行到浏览器还报错,那就对了,直接打包到真机上,相信自己没问题plus.runtime.install(downloadResult.tempFilePath, {force: false},function() {console.log('install success...');plus.runtime.restart();},function(e) {uni.hideLoading();console.error('install fail...');});}}});//如果是ios跳转到app store} else {//在App Store Connect中的App Store下的app信息,可找到appleId//这块ios更新,我还是不知道,因为我们只做安卓的,究竟管不管用,自己试试吧let appleId = plus.runtime.appidplus.runtime.launchApplication({action: `itms-apps://itunes.apple.com/cn/app/id${appleId}?mt=8`}, function(e) {uni.showToast({title: '打开应用商店失败'})console.log('打开应用商店失败: ' +e.message);});}} else if (res.cancel) {console.log('用户点击取消');}}})}},});},}
</script>

在这里插入图片描述

在这里插入图片描述

有疑问或者更好的实现方案可以评论一起探讨

相关文章:

uni-app打包apk实现自动更新

一、直接复制粘贴就可用(豪横) app.vue文件里写 //app.vue里写 <script>export default {onShow: function() {console.log(App Show)},onHide: function() {console.log(App Hide)},onLaunch: function() {let appVersion uni.getSystemInfo({success: function(e) {ap…...

SRS srs-bench

1 srs-bench 音视频压测工具&#xff0c;包括RTMP/FLV/WebRTC/GB28181等&#xff0c;未来还会完善。 SB(SRS Bench) is a set of benchmark and regression test tools, for SRS and other media servers, supports HTTP-FLV, RTMP, HLS, WebRTC and GB28181. For RTMP/HLS/F…...

HackTheBox-Starting Point--Tier 1---Appointment

文章目录 一 题目二 实验过程 一 题目 Tags Web、Databases、Injection、Apache、MariaDB、PHP、SQL、Reconnaissance、SQL Injection译文&#xff1a;Web、数据库、注入、Apache、MariaDB、PHP、SQL、侦察、SQL 注入Connect To attack the target machine, you must be on …...

【工具】Java请求带http重定向的地址 自动进行重定向

【工具】Java请求带http重定向的地址 自动进行重定向 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL;public class HTTPGETWithMultipleHeaders {public static voi…...

接口自动化测试方案

1、引言 1.1 文档版本 版本 作者 审批 备注 V1.0 XXXX 创建测试方案文档 1.2 项目情况 项目名称 XXX 项目版本 V1.0 项目经理 XX 测试人员 XXXXX&#xff0c;XXX 所属部门 XX 备注 1.3 文档目的 本文档主要用于指导XXX-YY项目常用接口自动化测试…...

TikTok文化探索:热议时事与社会话题

在当今数字时代&#xff0c;社交媒体平台如TikTok已经成为了我们日常生活中不可或缺的一部分。它不仅仅是一个娱乐应用&#xff0c;也是一扇窥视世界、探讨时事和社会话题的窗户。本文将深入探讨TikTok如何成为文化探索的平台&#xff0c;热议时事和社会话题&#xff0c;以及它…...

springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作

第一步&#xff1a;在mongodb的官网里面创建云服务器 点进去 这是免费的&#xff0c;由于是一个项目只可以创建一个&#xff0c;这里我已经创建好了 用本地的mongodb服务也是可以的 第二步&#xff1a;点击connect,下载连接mongodb的软件&#xff1a;MongoDBCompass 第三步&am…...

QWEN technical report

通义千问-Qwen技术报告细节分享 - 知乎写在前面大家好&#xff0c;我是刘聪NLP。 阿里在很早前就开源了Qwen-7B模型&#xff0c;但不知道为什么又下架了。就在昨天阿里又开源了Qwen-14B模型&#xff08;原来的7B模型也放出来了&#xff09;&#xff0c;同时还放出了Qwen的技术报…...

提升MODBUS-RTU通信数据刷新速度的常用方法

SMART PLC的MODBUS-RTU通信请参考下面文章链接: 【精选】PLC MODBUS通信优化、提高通信效率避免权限冲突(程序+算法描述)-CSDN博客MODBUS通讯非常简单、应用也非常广泛,有些老生常谈的问题,这里不再赘述,感兴趣的可以参看我的其它博文:SMART200PLC MODBUS通讯专题_RXXW…...

PyTorch 与 TensorFlow:机器学习框架之战

深度学习框架是简化人工神经网络 (ANN) 开发的重要工具&#xff0c;并且其发展非常迅速。其中&#xff0c;TensorFlow 和 PyTorch 脱颖而出&#xff0c;各自在不同的机器学习领域占有一席之地。但如何为特定项目确定理想的工具呢&#xff1f;本综合指南[1]旨在阐明它们的优点和…...

超简单理解冒泡排序

1.冒泡排序(Bubble Sort) 较简单排序算法。 它会遍历若干次要排列的数列&#xff0c;每次遍历&#xff0c;会从前往后比较相邻两个数的大小。 如果前者比后者大&#xff0c;就交换他们位置。遍历一次最大元素在数列末尾。重复直到数列有序。 那么遍历需要一个变量控制范围。…...

模拟IC设计工程师成长日记

很多IC设计的新人&#xff0c;不知道进入IC设计行业后会有哪些成长和学习的地方。 很多初入IC设计职场的人也都会比较恐慌&#xff0c;成长进步需要一个时间和经验的积累 今天给大家找了一个叫“模拟IC设计“攻城狮”的成长日记供大家参考. 以模拟IC设计工程师的身份进入职场&a…...

修炼k8s+flink+hdfs+dlink(六:学习namespace,service)

一&#xff1a;什么是namespace&#xff1f; 你可以认为namespaces是你kubernetes集群中的虚拟化集群。在一个Kubernetes集群中可以拥有多个命名空间&#xff0c;它们在逻辑上彼此隔离。 他们可以为您和您的团队提供组织&#xff0c;安全甚至性能方面的帮助&#xff01; 二&a…...

法语导游就业前景如何?

随着国际交流的日益频繁&#xff0c;旅游业正在迅猛发展。尽管全球讲法语的人数并不算多&#xff0c;但讲法语的国家分布广泛。因此&#xff0c;如何成为一名合法的法语导游&#xff0c;以及法语导游的就业前景如何&#xff0c;成为了法语爱好者比较关注的问题。 我们知道&…...

iOS自动混淆测试处理笔记

1 打开 ipa&#xff0c;导出ipa 路径和配置文件路径会自动填充 2 点击 开始自动混淆测试处理 自动混淆测试是针对 oc 类和oc方法这两个模块进行自动混淆ipa&#xff0c;并ipa安装到设备中运行&#xff0c;通过检测运行ipa包是否崩溃&#xff0c;来对oc类和oc方法进行筛选。如果…...

C51--单片机中断

51单片机是单线程模式&#xff0c;需要用到硬件中断。 一、中断系统 中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。 当中央处理器CPU正在处理某件事的时候&#xff0c;外界发生了紧急事件请求&#xff0c;要求CPU暂停当前工作&#xff0c;转而去处理这个紧急…...

Linux中关于glibc包导致的服务器死机或者linux命令无法使用的情况

glibc是gnu发布的libc库&#xff0c;即c运行库。glibc是linux系统中最底层的api&#xff0c;几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外&#xff0c;它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX …...

艾泊宇产品战略:华为手机品牌是如何从低端到高端的

华为在过去一直以几百块钱的低端手机为主&#xff0c;但如今已经可以跟苹果一争高下。 这个转变是华为经过了近二十年的艰苦努力才实现的。 我艾泊宇作为一个亲历者深度研究了华为的成长历程&#xff0c;发现这是一个经典的商业教科书案例。 这里面有很多值得今天中国企业学…...

视频批量AI智剪:提升剪辑效率的秘密方法

随着视频内容的爆炸式增长&#xff0c;剪辑师面临着巨大的工作压力。传统的剪辑方法往往效率低下&#xff0c;无法满足快速、高质量的剪辑需求。为了解决这个问题&#xff0c;视频批量AI智剪技术应运而生&#xff0c;成为提升剪辑效率的秘密方法。 视频批量AI智剪是指利用人工…...

linux环境执行jar脚本

一、前言 平常工作中&#xff0c;我们的开发的项目部署到linux环境&#xff0c;以jar包的方式运行&#xff0c;涉及jar包的启动、停止、查看状态等&#xff0c;我们可以通过脚本的方式进行维护&#xff0c;减少自己敲打一长串的命令少敲一个字母或者多敲一个字母&#xff0c;方…...

java打卡学习3:ArrayList扩容机制

ArrayList扩容机制概述ArrayList是基于动态数组实现的集合类&#xff0c;当元素数量超过当前数组容量时&#xff0c;会自动触发扩容机制。其核心目的是平衡内存占用与性能开销。默认初始容量未指定初始容量时&#xff0c;默认创建一个空数组&#xff08;JDK 1.8&#xff09;&am…...

摆脱论文困扰!高效论文写作全流程AI论文写作软件推荐(2026 最新)

论文写作全流程可拆解为文献调研→选题/开题→大纲/初稿→文献综述→降重/去AI味→润色/格式→查重/投稿七大环节&#xff0c;2026年AI论文写作软件按环节精准匹配&#xff0c;兼顾中文适配、降重能力、去AI痕迹、学术合规四大核心需求&#xff0c;覆盖免费/付费、通用/垂直场景…...

OpenClaw终端增强:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF实现命令行智能补全与解释

OpenClaw终端增强&#xff1a;Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF实现命令行智能补全与解释 1. 为什么需要智能终端助手 作为每天与终端打交道的开发者&#xff0c;我经常陷入这样的困境&#xff1a;面对复杂的docker compose命令需要反复查阅文档&#xf…...

终极指南:从NumPy到Pydantic的Claude-Code-Usage-Monitor依赖管理完整解析

终极指南&#xff1a;从NumPy到Pydantic的Claude-Code-Usage-Monitor依赖管理完整解析 【免费下载链接】Claude-Code-Usage-Monitor Real-time Claude Code usage monitor with predictions and warnings 项目地址: https://gitcode.com/gh_mirrors/cl/Claude-Code-Usage-Mon…...

Papercups开源客户聊天系统:7步快速定制部署完整指南

Papercups开源客户聊天系统&#xff1a;7步快速定制部署完整指南 【免费下载链接】papercups Open-source live customer chat 项目地址: https://gitcode.com/gh_mirrors/pa/papercups Papercups是一个功能强大的开源实时客户聊天系统&#xff0c;专为注重数据隐私和安…...

魔兽世界游戏插件开发从入门到实战:工具详解与效率提升指南

魔兽世界游戏插件开发从入门到实战&#xff1a;工具详解与效率提升指南 【免费下载链接】wow_api Documents of wow API -- 魔兽世界API资料以及宏工具 项目地址: https://gitcode.com/gh_mirrors/wo/wow_api 作为魔兽世界玩家&#xff0c;你是否曾想过通过自定义插件提…...

中集集团2025年经营现金流翻倍增长至185亿,有息负债下降约48亿元

据3月27日年报显示&#xff0c;2025年中集集团经营质量持续提升&#xff0c;经营活动产生的现金流量净额大幅增长99.9%至185亿元&#xff0c;反映出主营业务回款能力增强与运营效率改善。与此同时&#xff0c;公司持续推进资产负债结构优化&#xff0c;年末有息债务规模下降至3…...

带标注的交通工具分类数据集,17334张原始图片,识别率92.4%,可识别汽车,公共汽车,自行车,摩托车,支持yolo,coco json,pascal voc xml格式

带标注的交通工具分类数据集&#xff0c;17334张原始图片&#xff0c;识别率92.4%&#xff0c;可识别汽车&#xff0c;公共汽车&#xff0c;自行车&#xff0c;摩托车&#xff0c;支持yolo&#xff0c;coco json&#xff0c;pascal voc xml格式 模型训练指标参数&#xff1a; …...

CosyVoice Docker 部署优化:如何有效降低 CPU 占用率

在语音合成服务日益普及的今天&#xff0c;CosyVoice 凭借其出色的音质和灵活性&#xff0c;成为了许多开发者的选择。然而&#xff0c;当我们将它部署到 Docker 容器中时&#xff0c;一个普遍且棘手的问题随之而来&#xff1a;CPU 占用率居高不下。这不仅导致服务器资源成本飙…...

Llama-3.2V-11B-cot惊艳效果:多对象遮挡场景下的因果关系链推演

Llama-3.2V-11B-cot惊艳效果&#xff1a;多对象遮挡场景下的因果关系链推演 1. 视觉推理新标杆 在计算机视觉领域&#xff0c;多对象遮挡场景下的因果关系推演一直是个技术难题。传统方法往往只能识别可见部分&#xff0c;而无法理解遮挡背后的逻辑关系。Llama-3.2V-11B-cot的…...