uni-app vue2、js项目开启静默更新不生效,仍旧弹出更新弹窗

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

uni-app vue2、js项目开启静默更新不生效,仍旧弹出更新弹窗

项目信息 详情
产品分类 uniapp/App
PC开发环境 Windows
PC开发环境版本 Windows 11 家庭中文版 22H2
HBuilderX类型 正式
HBuilderX版本 3.96
手机系统 Android
手机系统版本 Android 13
手机厂商 小米
手机机型 Redmi K40
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

  • 本地版本1.6.0,远程wgt版本号 1.6.1,开启静默更新,本地仍然弹出更新弹窗

预期结果:

  • 开启静默更新后,自动下载安装包,下次打开默认完成更新

实际结果:

  • 本地版本1.6.0,远程wgt版本号 1.6.1,开启静默更新,本地仍然弹出更新弹窗

bug描述:

  • vue2、js的项目,开启静默更新不生效,仍旧弹出更新弹窗

6 回复

wgt 一般都是静默更新的,显示的是什么弹窗


我用的版本是 0.7.0 的,后台有一个 switch 控制静默更新的开关,打开情况和关闭情况表现一样,都会在调用的时候弹出弹窗。

预期情况是在开启静默更新的状态下,不弹出更新弹窗,后台静默下载安装包,下次打开app自动完成更新。

目前的情况是开启静默更新的状态下,仍旧弹出更新弹窗

回复 1***@qq.com: 作者解决了吗?我也遇到了这个情况

uni-app 中使用 Vue2JavaScript 开发的项目中,如果你希望实现静默更新(即不弹出更新弹窗),但仍然看到弹窗,可能是由于配置或代码实现的问题。以下是一些可能的原因和解决方案:

1. 检查 manifest.json 配置

manifest.json 文件中,确保你已经正确配置了 app-plus 下的 update 选项,并且设置了 silenttrue

{
  "app-plus": {
    "update": {
      "silent": true
    }
  }
}

2. 检查 checkUpdate 方法

App.vue 或其他入口文件中,检查 checkUpdate 方法的实现。确保你在调用 plus.runtime.getPropertyplus.runtime.openURL 时,没有触发弹窗。

export default {
  onLaunch() {
    this.checkUpdate();
  },
  methods: {
    checkUpdate() {
      plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
        uni.request({
          url: 'https://your-update-server.com/check-update', // 替换为你的更新检查接口
          data: {
            version: widgetInfo.version
          },
          success: (res) => {
            if (res.data.code === 200 && res.data.hasUpdate) {
              // 静默下载更新包
              plus.downloader.createDownload(res.data.downloadUrl, {}, (download) => {
                download.start();
                download.addEventListener('statechanged', (download, status) => {
                  if (status === 200) {
                    // 下载完成后静默安装
                    plus.runtime.install(download.filename, {
                      force: true
                    }, () => {
                      console.log('安装成功');
                    }, (error) => {
                      console.error('安装失败', error);
                    });
                  }
                });
              });
            }
          }
        });
      });
    }
  }
}

3. 检查 plus.runtime.install 方法

确保在调用 plus.runtime.install 时,没有触发弹窗。你可以通过设置 force: true 来强制安装,避免弹窗。

plus.runtime.install(download.filename, {
  force: true
}, () => {
  console.log('安装成功');
}, (error) => {
  console.error('安装失败', error);
});

4. 检查 plus.downloader.createDownload 方法

确保在调用 plus.downloader.createDownload 时,没有触发弹窗。你可以通过设置 silent: true 来静默下载。

plus.downloader.createDownload(res.data.downloadUrl, {
  silent: true
}, (download) => {
  download.start();
  download.addEventListener('statechanged', (download, status) => {
    if (status === 200) {
      // 下载完成后静默安装
      plus.runtime.install(download.filename, {
        force: true
      }, () => {
        console.log('安装成功');
      }, (error) => {
        console.error('安装失败', error);
      });
    }
  });
});

5. 检查 uni-app 版本

确保你使用的 uni-app 版本支持静默更新。某些旧版本可能不支持或不完全支持静默更新功能。

6. 检查服务器端返回的数据

确保服务器端返回的数据格式正确,并且 hasUpdatedownloadUrl 字段正确无误。

7. 调试和日志

在关键步骤中添加 console.loguni.showToast 来调试代码,确保每一步都按预期执行。

console.log('开始检查更新');
uni.request({
  url: 'https://your-update-server.com/check-update',
  data: {
    version: widgetInfo.version
  },
  success: (res) => {
    console.log('更新检查结果:', res.data);
    if (res.data.code === 200 && res.data.hasUpdate) {
      console.log('发现新版本,开始下载');
      plus.downloader.createDownload(res.data.downloadUrl, {
        silent: true
      }, (download) => {
        download.start();
        download.addEventListener('statechanged', (download, status) => {
          console.log('下载状态:', status);
          if (status === 200) {
            console.log('下载完成,开始安装');
            plus.runtime.install(download.filename, {
              force: true
            }, () => {
              console.log('安装成功');
            }, (error) => {
              console.error('安装失败', error);
            });
          }
        });
      });
    }
  }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!