uniapp安卓手机版本自检更新

安卓手机版本自检更新思路,现在后台定义一个版本参数,每次打开app的时候进行版本参数获取,并且跟本地的版本参数进行比较,如果本地的版本参数小于或不等于后台定义的版本,那么就会提醒更新版本,然后从放在后台服务器的apk进行下载安装。

检查版本,提醒用户是否更新版本,这里的plushtml5+的api

    var server_version = store.state.appversion
    export async function AndroidCheckUpdate(){  
         try{
             let version = await api('v2/cms/QueryConfigs',{
                 data:{
                     'type':'sys',
                     'key':'cthrVersion'
                 }
              })
              console.log('version',version)
              server_version = version[0].value
             let curr_version = store.state.appversion
             checkVersionToLoadUpdate(server_version,curr_version)
         }catch(e){
             console.log(e)
         }
    }
    function checkVersionToLoadUpdate(server_version,curr_version){
        console.log(server_version+'---'+curr_version,server_version !== curr_version);
        if(server_version !== curr_version){
            //TODO 此处判断是否为 WIFI连接状态
            if(plus.networkinfo.getCurrentType()!=3){
                uni.showToast({  
                    title: '有新的版本发布,检测到您目前非Wifi连接,为节约您的流量,程序已停止自动更新,将在您连接WIFI之后重新检测更新',  
                    mask: true,  
                    duration: 5000,
                    icon:"none"
                });  
                return;  
            }else{
                uni.showModal({
                    title: "版本更新",
                    content: `有新的版本发布,检测到您当前为Wifi连接,是否立即进行新版本下载?当前下载版本为${server_version}`,
                    confirmText:'立即更新',
                    cancelText:'稍后进行',
                    success: function (res) {
                        if (res.confirm) {
                            uni.reLaunch({
                                url:'/pages/auth/updatePage/updatePage'
                            })
                        } else if (res.cancel) {
                            console.log('稍后更新');
                        }
                    }
                });
            }
        }
    }

进入下载页进行apk包下载,这里下载完成之后会自动拉起安装框进行文件安装。

var totalSize = 0
var nowbaifen = 0
export function uniDownload(){
    uni.showToast({
        icon:"none",
        mask: true,
        title: '有新的版本发布,检测到您目前为Wifi连接,程序已启动自动更新。新版本下载完成后将自动弹出安装程序',  
        duration: 5000,  
    }); 
    //设置 最新版本apk的下载链接
    var downloadApkUrl = '最新版本apk的下载链接';
    var dtask = plus.downloader.createDownload( downloadApkUrl, {}, function ( d, status ) {  
            // 下载完成  
            if ( status == 200 ) {   
                plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename),{},{},function(error){  
                    uni.showToast({  
                        title: '安装失败', 
                        duration: 1500  
                    });  
                })
            } else {  
                 uni.showToast({  
                    title: '更新失败',
                    duration: 1500  
                 });  
            }    
        });
          //监听下载
        dtask.addEventListener("statechanged", function (download, status) {
          switch (download.state) {
              case 2:
                // plus.nativeUI.showWaiting("正在下载...");
                  break;
              case 3:
                //进度条百分比 totalSize为总量,baifen为当前下载的百分比
                if(totalSize==0){
                  totalSize=parseInt(download.totalSize);
                }
                if(parseInt(download.downloadedSize/totalSize*100)!=nowbaifen){
                   nowbaifen=parseInt(download.downloadedSize/totalSize*100);
                   store.state.baifen = nowbaifen
                   // store.commit('getBaifen',nowbaifen)
                   console.log('baifen',store.state.baifen)
                }                           
                  break;
              case 4:
                 uni.showToast({
                    title: '下载完成',
                    duration: 1500  
                 });
                // plus.nativeUI.closeWaiting();
                  break;
          }
      });
    dtask.start();
}

你可能感兴趣的:(uniapp安卓手机版本自检更新)