244  
查询码:00000656
uni-app在线更新
作者: 恽鑫柯 于 2020年07月01日 发布在分类 / 人防组 / 人防前端 下,并于 2020年07月01日 编辑
uni-app

注:本文为uni-app在线更新

修改版本号

在打包生成新的apk前一定!一定!一定要先修改 manifest.json 中的版本号 (重要的事情说三遍)。

比如之前是 1.0.0,那么新版本应该是 1.0.1  这样。

粘贴图片

客户端检测升级


用户登录或进入首页需要检测当前版本是否为最新版本,在这边写了一个方法,传递两个版本号返还对比结果,代码奉上

/*
	 * 版本号比较方法
	 * 传入两个字符串,当前版本号:curV;比较版本号:reqV
	 * 调用方法举例:compare("1.0.1","1.0.2"),将返回false
	 */
	function compare(curV, reqV) {
	  if (curV && reqV) {
	    //将两个版本号拆成数字
	    var arr1 = curV.split('.'),
	      arr2 = reqV.split('.');
	    var minLength = Math.min(arr1.length, arr2.length),
	      position = 0,
	      diff = 0;
	    //依次比较版本号每一位大小,当对比得出结果后跳出循环(后文有简单介绍)
	    while (position < minLength && ((diff = parseInt(arr1[position]) - parseInt(arr2[position])) == 0)) {
	      position++;
	    }
	    diff = (diff != 0) ? diff : (arr1.length - arr2.length);
	    //若curV大于reqV,则返回true
	    return diff > 0;
	  } else {
	    //输入为空
	    console.log("版本号不能为空");
	    return false;
	  }
	}
	
	module.exports = {
		compare: compare,
	}

在版本号对比之前,我们还需要考虑手机型号ios和android的区别,因此需要使用uni-app的获取系统信息的方uni.getSystemInfo。


// 获取手机型号
      if (res.platform == ") { // GetPublicNewEditionForAndroid为后端提供的获取最新版本信息接口
        this.$api.AppInformation.GetPublicNewEditionForAndroid().then(res => {
          // 获取当前已安装app的版本
          plus.runtime.getProperty(plus.runtime.appid, function(inf) {
            uni.setStorageSync("version", inf.version);
            // 获取版本对比结果versionCompare(该方法为上文提供的版本对比方法,名称自定义)
            var resault = versionCompare(
              res[1].data.result.versionNum,
              inf.version
            );
            if (resault) {
              var appUrl = res[1].data.result.downUrl;
              uni.showModal({
                title: "版本检测",
                content: "该App有新版本上线,请及时更新",
                success: function(res) {
                  if (res.confirm) {
                    uni.showLoading({
                      title: "更新中……"
                    });
                    uni.downloadFile({
                      //执行下载
                      url: appUrl,
                      success: downloadResult => {
                        //下载成功
                        if (downloadResult.statusCode === 200) {
                          uni.showModal({
                            title: "",
                            content: "更新成功,确定现在重启吗?",
                            confirmText: "重启",
                            confirmColor: "#EE8F57",
                            success: function(res) {
                              if (res.confirm) {
                                plus.runtime.install(
                                  //安装
                                  downloadResult.tempFilePath,
                                  {
                                    force: true
                                  },
                                  function() {
                                    // utils.showToast('更新成功,重启中');
                                    plus.runtime.restart();
                                  },
                                  function(e) {
                                    // utils.showToast('更新失败');
                                  }
                                );
                              }
                            }
                          });
                        }
                      },
                      complete: () => {
                        uni.hideLoading();
                      }
                    });
                  }
                }
              });
            }
          });
        });
      }






 推荐知识

 历史版本

修改日期 修改人 备注
2020-07-01 10:15:54[当前版本] 恽鑫柯 1.0.0

 附件

附件类型

PNGPNG

知识分享平台 -V 4.8.7 -wcp