Skip to content

Uniapp APP 版本更新

自定义升级中心

更新方式

  1. 安卓:下载完成 APK 文件后,重启应用
  2. IOS:点击更新按钮,跳转 AppStore 下载最新版本

版本更新流程

  1. 获取当前应用版本名称和应用版本号
  2. 比对当前 wgtVersionapkVersion 与线上版本号
  3. 如果线上版本号大于当前版本号,则需要更新,其他的不需要
  4. 如果是此次更新是 APK 类型,则 IOS 跳转 AppStore,Android 则直接下载并安装后重启应用
  5. 如果是此次更新是 WGT 类型,则直接需要下载并安装后重启应用

注意:

  1. APK 类型的适用于大版本更新,需要强制更新并且重新上架应用市场
  2. WGT 类型的更新适用于 小bug调整和样式调整,可以不需要强制更新
  3. WGT 的更新 应用版本名称和应用版本号 一定要大于当前APK基座的应用版本名称和应用版本号
  4. 每次打包前一定注意修改 应用版本名称应用版本号

使用的相关 API

js
// 创建下载任务
plus.downloader.createDownload(url, {}, (d, status) => {
  if (status === 200) {
    // 下载成功
    plus.runtime.install(
      d.filename,
      { force: true },
      () => {
        plus.runtime.restart();
      },
      () => {
        // 安装失败回调
        uni.showToast({
          title: '安装失败,请稍后重试',
          icon: 'none',
        });
      },
    );
  } else {
    // 下载失败
    uni.showToast({
      title: '安装包下载失败,请稍后重试',
      icon: 'none',
    });
  }
});

// 重启应用
plus.runtime.restart();

// 跳转 AppStore
plus.runtime.openURL(`https://itunes.apple.com/cn/app/id${appleId}`);

uni-upgrade-center 升级中心

APP 升级中心,提供了 APP 版本更新服务

整个升级中心包括两个部分 uni-upgrade-center Admin 管理后台uni-upgrade-center APP

  1. Android、IOS的APP安装包升级和wgt资源包增量更新
  2. 后台管理系统 uni-upgrade-center Admin,用于发布新版、设置升级策略

uni-upgrade-center Admin 管理后台

负责发布新版和管理历史版本APP的上下线

uni-upgrade-center-app 前台检测更新

除了管理端,客户端则负责前台检查升级更新,弹出提示框,下载和安装新版

提示框弹窗可以自定义UI

只需要导入这个插件 uni-upgrade-center-APP,绑定对应服务空间

page.json添加升级弹窗页面

json
{
  "pages": [
    {
      "path": "uni_modules/uni-upgrade-center-app/pages/upgrade-popup",
      "style": {
        "disableScroll": true,
        "app-plus": {
          "backgroundColorTop": "transparent",
          "background": "transparent",
          "titleNView": false,
          "scrollIndicator": false,
          "popGesture": "none",
          "animationType": "fade-in",
          "animationDuration": 200
        }
      }
    }
  ]
}

在首页或者设置页面调用它提供的检查更新的方法 check-update

vue
<script>
import checkUpdate from '@/uni_modules/uni-upgrade-center-app/utils/check-update.js';
export default {
  onLaunch() {
    checkUpdate();
  },
};
</script>