j***@163.com
j***@163.com
  • 发布:2022-08-27 10:02
  • 更新:2024-09-23 15:42
  • 阅读:493

安卓检查升级及安装包下载进度

分类:uni-app

代码来源

另:极力推荐官方的upgrade-center https://uniapp.dcloud.io/uniCloud/upgrade-center,非常方便


App.vue中的代码,负责检测

<script>  
  import { serverUrl } from '@/util/http'  
  export default {  
    globalData: {  
      title: '管理系统',  
      ver: 101,  
    },  
    onLaunch: function() {  
      console.log('App Launch')  
      this.checkVer()  
    },  
    onShow: function() {  
      console.log('App Show')  
    },  
    onHide: function() {  
      console.log('App Hide')  
    },  
    methods: {  
      checkVer: function() {  
        uni.getSystemInfo({  
          success: (res) => {  
            console.log(res.platform);  
            //检测当前平台,如果是安卓则启动安卓更新    
            if (res.platform == "android") {  
              this.AndroidCheckUpdate();  
            }  
          }  
        })  
      },  
      AndroidCheckUpdate: function() {  
        var _this = this;  
        uni.request({  
          url: serverUrl + '/check-ver',  
          method: 'GET',  
          data: {},  
          success: res => {  
            console.log('res', res.data.data)  
            const data = res.data.data  
            const ver = data.ver  
            const downUrl = data.url  
            if (ver > this.globalData.ver) {  
              uni.showToast({  
                title: '有新的版本发布,程序已启动自动更新。新版本下载完成后将自动弹出安装程序。',  
                mask: true,  
                duration: 5000,  
                icon: "none"  
              });  
              var prg = 0;  
              var dtask = plus.downloader.createDownload(downUrl, {}, function(d, status) {  
                // 下载完成    
                if (status == 200) {  
                  plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, {}, function(  
                    error) {  
                    uni.showToast({  
                      title: '安装失败',  
                      mask: false,  
                      duration: 1500  
                    });  
                  })  
                } else {  
                  uni.showToast({  
                    title: '更新失败',  
                    mask: false,  
                    duration: 1500  
                  });  
                }  
              });  
              dtask.start();  

              var showLoading = plus.nativeUI.showWaiting("正在下载");  
              dtask.addEventListener('statechanged', function(task, status) {  
                // 给下载任务设置一个监听 并根据状态 做操作  
                switch (task.state) {  
                  case 1:  
                    showLoading.setTitle("正在下载");  
                    break;  
                  case 2:  
                    showLoading.setTitle("已连接到服务器");  
                    break;  
                  case 3:  
                    prg = parseInt(  
                      (parseFloat(task.downloadedSize) /  
                        parseFloat(task.totalSize)) *  
                      100  
                    );  
                    showLoading.setTitle("版本更新,正在下载" + prg + "% ");  
                    break;  
                  case 4:  
                    plus.nativeUI.closeWaiting();  
                    //下载完成  
                    break;  
                }  
              });  

            }  
          },  
          fail: () => {},  
          complete: () => {}  
        });  
      },  
    }  
  }  
</script>

服务器响应的代码

返回内容

{code: 0, message: '', data: {ver: 102, url: 'http://...com/file_102.apk'}}
0 关注 分享

要回复文章请先登录注册

1***@qq.com

1***@qq.com

我的totalSize为什么一直都是0
2024-09-23 15:42