uni-app写小程序版本号问题

发布于 1周前 作者 yuanlaile 来自 Uni-App

uni-app写小程序版本号问题

使用uni.getAccountInfoSync().miniProgram.version获取版本号,更新后一打开还是老版本

信息 描述
版本号 通过 uni.getAccountInfoSync().miniProgram.version 获取
7 回复

之前运行是否正常?当前应用重启后是否正常?缩小下问题范围是这个 api 不能用,还是有缓存获取到不是最新导致的?


小程序一切都是正常的,是因为想做强制更新的更新提示,然后使用这个api,这个api有时候就会获取不到新的,应该是有缓存获取到不是最新导致的,这个有解决的办法吗

回复 x***@163.com: 小程序强制更新,有官方的 api 实现。这个 api 的原始实现,用的是微信小程序提供的 api,uniapp 没有修改,你可以尝试改成 wx.getAccountInfoSync 是否正常

回复 DCloud_UNI_OttoJi: 使用官方的强制更新api,在网络很好的时候就会直接更新不弹出更新提示框,有办法让他都弹出吗

回复 DCloud_UNI_OttoJi: 按照这个走更新,网络好的时候就会直接更新了,不会弹出提示更新的窗口,现在需求想版本不管是否为最新的,更新后都要弹出这个更新提示窗。有什么办法可以实现吗

在处理uni-app开发的小程序版本号问题时,通常涉及到在manifest.json文件中配置版本信息,以及在代码中可能进行的版本判断或更新逻辑。下面是一个详细的代码案例,展示如何在uni-app中设置和处理小程序的版本号。

1. 配置版本号

首先,你需要在manifest.json文件中配置小程序的版本号。这个文件位于项目的根目录下,包含了项目的全局配置。

{
  "mp-weixin": { // 微信小程序配置
    "appid": "your-app-id",
    "setting": {
      "urlCheck": false
    },
    "version": { // 版本信息
      "name": "1.0.1", // 版本名称
      "code": "101"    // 版本号,用于区分不同版本
    }
  },
  // 其他平台配置...
}

2. 获取当前版本号

在代码中,你可以通过读取manifest.json文件来获取当前版本号。不过,直接读取文件在运行时并不方便,通常是在构建阶段通过脚本处理或在代码中硬编码一个获取版本号的接口。

以下是一个简单的示例,假设你有一个API接口返回当前应用的版本信息:

// 获取当前版本信息
uni.request({
  url: 'https://your-api-domain.com/version', // 替换为你的版本信息接口
  success: (res) => {
    const currentVersion = res.data.version; // 假设返回的数据结构为 { version: '1.0.1' }
    console.log('当前版本:', currentVersion);

    // 在这里可以添加版本判断逻辑,比如提示用户更新等
    if (compareVersions(currentVersion, '1.0.2') < 0) {
      uni.showModal({
        title: '更新提示',
        content: '发现新版本,请更新应用。',
        success: (result) => {
          if (result.confirm) {
            // 跳转到更新页面或下载地址
            uni.navigateTo({
              url: '/pages/update/update'
            });
          }
        }
      });
    }
  }
});

// 版本比较函数(简单实现)
function compareVersions(v1, v2) {
  const arr1 = v1.split('.');
  const arr2 = v2.split('.');
  const len = Math.max(arr1.length, arr2.length);

  for (let i = 0; i < len; i++) {
    const num1 = parseInt(arr1[i] || 0, 10);
    const num2 = parseInt(arr2[i] || 0, 10);

    if (num1 > num2) return 1;
    if (num1 < num2) return -1;
  }
  return 0;
}

上述代码展示了如何获取当前版本信息,并进行版本比较,如果当前版本低于服务器上的版本,则提示用户更新。注意,这里的compareVersions函数是一个简单的版本比较实现,适用于大多数场景。根据你的实际需求,你可能需要调整或优化这个函数。

回到顶部