uniapp云打包如何实现自动更新

在uniapp中使用云打包时,如何实现应用的自动更新功能?需要具体步骤或配置说明,包括版本检测、更新提示和下载安装的完整流程。是否必须依赖第三方服务,还是有官方推荐的解决方案?

2 回复

uniapp云打包自动更新可通过以下步骤实现:

  1. 使用uni-upgrade-center插件
  2. 配置manifest.json中的版本号
  3. 上传wgt资源包到服务器
  4. 客户端检测版本并提示更新
  5. 下载wgt包并调用plus.runtime.install安装

注意:需在App启动时检查更新,wgt包仅更新资源文件,不涉及原生模块。


在 UniApp 中实现云打包后的自动更新,可以通过以下步骤完成。核心原理是检测服务器上的新版本,下载并安装更新包。以下是具体实现方法:

实现步骤

  1. 版本管理

    • manifest.json 中配置应用版本号(如 1.0.0)和版本代码(整数,如 1)。
    • 每次更新时递增版本代码,并上传新版 APK/IPA 到服务器。
  2. 检测更新

    • 应用启动时,向服务器接口请求最新版本信息(版本号、下载链接、更新说明等)。
    • 对比本地版本(通过 plus.runtime.version 获取)与服务器版本,判断是否需要更新。
  3. 下载并安装

    • 使用 UniApp 的 plus.downloader 下载新版本安装包。
    • 通过 plus.runtime.install 静默安装(Android)或跳转应用商店(iOS)。

代码示例(Vue 页面中)

export default {
  methods: {
    checkUpdate() {
      // 模拟从服务器获取最新版本信息
      const serverVersion = {
        version: '1.0.1',
        code: 2,
        url: 'https://example.com/app.apk',
        note: '修复已知问题'
      };

      // 获取当前应用版本
      const currentVersion = plus.runtime.version;
      const currentCode = parseInt(plus.runtime.versionCode);

      if (serverVersion.code > currentCode) {
        uni.showModal({
          title: '发现新版本',
          content: serverVersion.note,
          confirmText: '更新',
          success: (res) => {
            if (res.confirm) {
              this.downloadUpdate(serverVersion.url);
            }
          }
        });
      }
    },

    downloadUpdate(url) {
      const task = plus.downloader.createDownload(
        url,
        { filename: '_doc/update/' }, // 保存路径
        (download, status) => {
          if (status === 200) {
            plus.runtime.install(download.filename, {}, () => {
              uni.showToast({ title: '安装完成', icon: 'success' });
            });
          } else {
            uni.showToast({ title: '下载失败', icon: 'error' });
          }
        }
      );
      task.start();
    }
  },

  onLoad() {
    // 应用启动时检查更新
    this.checkUpdate();
  }
};

注意事项

  • Android 权限:在 manifest.json 中需添加 <uses-permission android:name="android.permission.INSTALL_PACKAGES" /> 和存储权限。
  • iOS 限制:无法直接安装 IPA,需跳转 App Store(通过 plus.runtime.openURL())。
  • 热更新限制:云打包后无法使用 wgt 热更新,必须整包更新。
  • 网络安全:确保下载链接使用 HTTPS,避免被劫持。

优化建议

  • 可增加进度条显示下载进度。
  • 支持强制更新(忽略取消按钮)。
  • 版本信息接口加入缓存机制,避免频繁请求。

通过以上方法,即可实现 UniApp 云打包后的自动更新功能。

回到顶部