mosowe
mosowe
  • 发布:2023-03-21 11:59
  • 更新:2023-03-21 14:19
  • 阅读:1711

uniapp使用wgt热更新后,手机设置中应用信息版本号未改变

分类:uni-app

测试机型:华为、vivo、红米

  1. 先下载全量包apk,版本号为2.1.4,
  2. 发布wgt热更新包,版本号为2.1.5,
  3. app打卡提示更新,更新完毕,重启,有更新的内容,更新成功,app内查看版本号为2.1.5,
  4. 进入手机系统设置页面,找到该app,查看应用信息,显示版本号还是2.1.4
  5. 接着在该页面进入app存储目录,删除数据,
  6. 重启app,又提示更新2.1.5。

wgt热更新没能更新到系统的版本号,如何处理?

// 版本检查  
onMounted(() => {  
    checkVersion(); // 检查是否需要升级  
});  
const appStore: appType = useApp();  
const isUpdateApp = ref(false); // 是否更新app  
const versionInfo = ref<VersionType>({}); // 版本信息  
appStore.setDeviceInfo(uni.getSystemInfoSync()); // 设备信息  
//检查是否需要升级  
const checkVersion = () => {  
  uni.getSystemInfo({  
    success: (systeminfo) => {  
      plus.runtime.getProperty(plus.runtime.appid as string, (wgtinfo) => {  
        // 检查是否需要更新-接口  
        AppVersionCheckApi({  
          appType: systeminfo.platform == 'ios' ? 1 : 0, //平台  
          version: wgtinfo.version //应用版本号  
        })  
          .then((res) => {  
            const data: any = res.data;  
            if (data.isNeedUpdate === 1) {  
              //需要更新  
              emits('updateApp', true);  
              isUpdateApp.value = true;  
              versionInfo.value = data;  
              versionInfo.value.platform = systeminfo.platform;  
            } else {  
              emits('updateApp', false);  
              // 无需更新  
              appStore.setAppInfo({  
                version: wgtinfo.version  
              });  
            }  
          })  
          .catch(() => {  
            emits('updateApp', false);  
          });  
      });  
    },  
    fail: () => {  
      emits('updateApp', false);  
    }  
  });  
};  
// 更新  
const updateVersion = () => {  
  isUpdateApp.value = false;  
  // #ifdef APP-PLUS  
  //处理版本更新  
  updateVersionInfo(versionInfo.value);  
  //#endif  
};  

//检查更新版本  
const updateVersionInfo = (vdata: any) => {  
  // #ifdef APP-PLUS  
  if (vdata && vdata.isNeedUpdate === 1) {  
    if (vdata.platform == 'ios' && !vdata.wgtPackageUrl) {  
      //ios  
      plus.runtime.openURL('****************'); //appstore地址第一次上架后写死  
    } else {  
      //Android  
      let url, packageName;  
      if (vdata.wgtPackageUrl) {  
        //热升级包  
        url = vdata.wgtPackageUrl;  
      } else {  
        //整包  
        url = vdata.wholePackageUrl;  
      }  
      let arr = url.split('/');  
      packageName = arr[arr.length - 1];  
      if (url) {  
        updateVersionByWgt(url, packageName);  
      } else {  
        uni.showModal({  
          title: '提示',  
          content: '更新地址错误,请联系管理员!'  
        });  
      }  
    }  
  }  
  // #endif  
};  

const updateVersionByWgt = (url: string, packageName: any) => {  
  let dtask;  
  //下载状态  
  const onStateChanged = (download: any, status: number) => {  
    if (download.state == 4 && status == 200) {  
      uni.hideLoading();  
      // 下载完成  
      uni.showLoading({  
        mask: true,  
        title: '下载完成,正在安装...'  
      });  
      plus.runtime.install(  
        download.getFileName(),  
        {  
          force: false  
        },  
        () => {  
          uni.hideLoading();  
          uni.showModal({  
            title: '提示',  
            content: '安装完成,是否马上重启?',  
            success: (res) => {  
              if (res.confirm) {  
                plus.runtime.restart();  
              }  
            }  
          });  
        },  
        (e) => {  
          uni.hideLoading();  
          uni.showModal({  
            title: '提示',  
            content: '安装失败[' + e.code + ']:' + e.message  
          });  
          console.error('install fail...', e.message);  
        }  
      );  
    }  
  };  
  // 创建下载任务  
  const createDownload = () => {  
    uni.showLoading({  
      mask: true,  
      title: '下载新版本...'  
    });  
    dtask = plus.downloader.createDownload(getApp().globalData?.basepicpath + url, {  
      filename: '_doc/app_temp/download/' + packageName  
    });  
    dtask.addEventListener('statechanged', onStateChanged, false);  
    dtask.start();  
  };  
  createDownload();  
};  
2023-03-21 11:59 负责人:无 分享
已邀请:
广州极智

广州极智

用 plus.runtime.versionCode 的版本号

  • mosowe (作者)

    你说的是app内显示的版本号用这个吗?热更新不能修改应用中心展示的版本号吗?

    2023-03-21 14:32

  • 广州极智

    回复 mosowe: 你怎么能修改 应用中心 展示的版本号。。

    2023-03-22 15:01

该问题目前已经被锁定, 无法添加新回复