uni-app APP升级中心下方的立即更新按钮点击后不显示进度条

uni-app APP升级中心下方的立即更新按钮点击后不显示进度条

类别 信息
产品分类 uniapp/App
PC开发环境 Mac
PC版本号 14
HBuilderX 正式
HBuilderX版本号 4.17
手机系统 Android
手机版本号 Android 14
手机厂商 小米
手机机型 小米13U
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

在uni-admin的APP升级中心发不新版本,如果选择了强制更新,在APP端配套的uni-upgrade-center-App组件则可以显示下载进度条, 反之,如果没有选择强制更新,APP端则不显示进度条,点击后弹框消失。

预期结果:

应该都显示实时下载进度条

实际结果:

非强制更新不显示

bug描述:

在uni-admin的APP升级中心发不新版本,如果选择了强制更新,在APP端配套的uni-upgrade-center-App组件则可以显示下载进度条, 反之,如果没有选择强制更新,APP端则不显示进度条,点击后弹框消失。


更多关于uni-app APP升级中心下方的立即更新按钮点击后不显示进度条的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

同样遇到这个问题,插眼+1

更多关于uni-app APP升级中心下方的立即更新按钮点击后不显示进度条的实战教程也可以访问 https://www.itying.com/category-93-b0.html


请问楼主点击下载更新后,会正常更新新版app吗,我的点击 立即下载更新 后就没反应了,同事我也是没有下载进度条的

本人遇到同样的问题,在小米、vivo都这样。

uni-app 中使用 APP升级中心 时,如果点击“立即更新”按钮后不显示进度条,可能是以下几个原因导致的。你可以根据以下步骤进行排查和解决:


1. 检查是否配置了更新逻辑

确保你已经在项目中正确配置了 APP 升级的逻辑,包括检测更新、下载更新包和安装更新。以下是 uni-app 中常用的升级逻辑示例:

uni.getUpdateManager().onCheckForUpdate(function (res) {
  // 请求完新版本信息的回调
  if (res.hasUpdate) {
    uni.showModal({
      title: '更新提示',
      content: '发现新版本,是否立即更新?',
      success: function (res) {
        if (res.confirm) {
          // 用户确认更新
          uni.getUpdateManager().onUpdateReady(function () {
            uni.showModal({
              title: '更新提示',
              content: '新版本已经下载完成,是否立即重启应用?',
              success: function (res) {
                if (res.confirm) {
                  // 重启应用
                  uni.getUpdateManager().applyUpdate();
                }
              }
            });
          });

          uni.getUpdateManager().onUpdateFailed(function () {
            uni.showModal({
              title: '更新提示',
              content: '新版本下载失败,请检查网络后重试。'
            });
          });
        }
      }
    });
  }
});

2. 确保 uni.getUpdateManager() 可用

uni.getUpdateManager()uni-app 提供的用于管理应用更新的 API。确保你的运行环境支持该 API。目前,该 API 仅在 微信小程序HBuilderX 打包的 App 中可用。


3. 检查是否监听了下载进度事件

如果需要在下载更新包时显示进度条,需要监听 onDownloadProgress 事件。以下是示例代码:

const updateManager = uni.getUpdateManager();

updateManager.onCheckForUpdate(function (res) {
  if (res.hasUpdate) {
    uni.showModal({
      title: '更新提示',
      content: '发现新版本,是否立即更新?',
      success: function (res) {
        if (res.confirm) {
          // 监听下载进度
          updateManager.onDownloadProgress(function (res) {
            const progress = res.progress; // 下载进度(0-100)
            console.log('下载进度:', progress);
            // 更新进度条 UI
            uni.showLoading({
              title: `下载中 ${progress}%`,
              mask: true
            });
          });

          // 下载完成
          updateManager.onUpdateReady(function () {
            uni.hideLoading();
            uni.showModal({
              title: '更新提示',
              content: '新版本已经下载完成,是否立即重启应用?',
              success: function (res) {
                if (res.confirm) {
                  updateManager.applyUpdate();
                }
              }
            });
          });

          // 下载失败
          updateManager.onUpdateFailed(function () {
            uni.hideLoading();
            uni.showModal({
              title: '更新提示',
              content: '新版本下载失败,请检查网络后重试。'
            });
          });
        }
      }
    });
  }
});

4. 检查是否为生产环境

uni.getUpdateManager() 仅在生产环境中生效。在开发环境下,可能无法触发更新逻辑。请确保将代码打包发布到生产环境测试。


5. 检查网络权限

确保应用有访问网络的权限。如果网络请求被拦截或权限不足,可能导致无法下载更新包。


6. 检查更新包是否正确

确保服务器上的更新包路径和版本号配置正确。如果更新包无法下载或文件损坏,可能导致更新失败。


7. 调试日志

在关键步骤中添加日志,检查代码执行情况。例如:

console.log('检查更新结果:', res);
console.log('下载进度:', res.progress);
回到顶部