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

uniapp APP端在线升级(简版)

设计思路:

1.版本比较:应用程序检查其当前版本与远程服务器上可用的最新版本

2. 更新状态指示:如果应用程序是不是最新的版本,则页面提示下载最新版本。

3.下载启动:通过plus.downloader.createDownload()启动新应用版本的下载,监听下载过程。

4.安装:下载成功后,用户可点击更新,应用程序通过plus.runtime.install()触发新应用版本的安装。

5应用重启:最后,应用程序使用plus.runtime.restart()重启以应用。



      let configUrl = config.baseUrl
      let baseUrl = configUrl.toString().split(':')
      let appUrl = baseUrl[0] + ':' + baseUrl[1] + ":8888/statics/his-app.apk"
      let downloadTask = plus.downloader.createDownload(
        appUrl,

        {
          method: "GET",
        },
        (task, status) => {
          console.log(status, "status")
          if (status == 200) {
            //下载成功
            uni.showModal({
              title: '',
              content: '下载成功,确定现在更新吗?',
              confirmText: '更新',
              confirmColor: '#EE8F57',
              success: function (res) {
                if (res.confirm) {
                  console.log("更新")
                  plus.runtime.install(
                    task.tempFilePath,
                    {
                      force: true,
                    },
                    function () {
                      // 安装成功,可以重启应用
                      plus.runtime.restart()
                    },
                    function (e) {
                      uni.showModal({
                        title: '更新失败',
                        content: '更新失败',
                        showCancel: false
                      })
                      plus.nativeUI.closeWaiting()
                      // 安装失败,处理错误
                    }
                  )
                }
              },
              complete: () => {
                // uni.hideLoading();
              }
            })
          } else {
            uni.showToast({
              title: "下载失败",
              icon: "error",
            })
          }
        }
 

     

 

 //监听下载过程
      downloadTask.addEventListener("statechanged", (task, status) => {
        switch (task.state) {
          case 1: // 开始
            console.log("开始")
            break
          case 2: //已连接到服务器
            console.log("已连接到服务器")
            break
          case 3: // 已接收到数据
            console.log("已接收到数据 ")
            let hasProgress = task.totalSize && task.totalSize > 0 //是否能获取到App大小
            if (hasProgress) {
              let current = parseInt(
                (100 * task.downloadedSize) / task.totalSize
              ) //获取下载进度百分比
              console.log(current)
            }
            break
          case 4: // 下载完成
            console.log("下载完成")
            break
        }
      })
      //开始执行下载
      downloadTask.start()

    },

 

http://www.dtcms.com/a/105415.html

相关文章:

  • Linux服务器配置安装与管理
  • Linux探秘坊-------10.基础IO
  • WebRTC的ICE之TURN协议的交互流程中继转发Relay媒体数据的turnserver的测试
  • source(WEB)
  • VHT AMPDU
  • web网站页面测试点---添加功能测试
  • Modbus主站EtherNet/IP转ModbusRTU/ASCII工业EIP网关串口服务器
  • 基于SpringAOP面向切面编程的一些实践(日志记录、权限控制、统一异常处理)
  • 【TS学习】(20)有关this的类型处理
  • LeetCode 每日一题 2712. 使所有字符相等的最小成本 O(n)
  • 深度学习入门:从神经网络基础到简单实现
  • 国产人才画像系统哪家好?
  • Redis-15.在Java中操作Redis-Spring Data Redis使用方式-操作集合类型的数据
  • Java 大视界 -- Java 大数据机器学习模型在金融衍生品定价中的创新方法与实践(166)
  • 2025年- G34-Lc108-207. 课程计划--java版
  • Java面试黄金宝典25
  • 51单片机的五类指令(五)——位操作类指令
  • 身份证信息查询API:精准识别身份证号码
  • 操作系统高频(五)linux命令
  • 【小也的Java之旅系列】02 分布式集群详解
  • 经典算法Golang实现
  • 【含文档+PPT+源码】基于微信小程序的社交摄影约拍平台的设计与实现
  • python 语言始终是中文
  • 论文笔记(七十五)Auto-Encoding Variational Bayes
  • vue父子周期解决问题
  • Dubbo分布式框架学习(2)
  • Cursor:AI 驱动的编程变革者
  • JavaScript性能优化实践:从微观加速到系统级策略
  • 【数据分享】中国3254座水库集水区特征数据集(免费获取)
  • C++11QT复习 (七)