uniapp的更新流程【安卓、IOS、热更新】

UniApp应用更新方案

两种更新方式

  1. APP全量升级:需要重新下载安装包
  2. 热更新:通过下载wgt资源包实现,用户只需重启应用

Android更新实现

用户需要授权安装权限,流程为下载APK后自动弹出安装界面

javascript 复制代码
var dtask = plus.downloader.createDownload("APK下载地址", {
  method: "GET"
}, (d, status) => {
  if (status == 200) {
    console.log("下载成功安装: " + d.filename);
    plus.runtime.install(d.filename)
  } else {
    plus.nativeUI.alert("安装失败,请稍候重试: " + status)
  }
});

this.downloading = true
dtask.addEventListener('statechanged', (e) => {
  // 下载进度监听
  this.downloadedSize = (e.downloadedSize / 1000000).toFixed(1)
  this.packageFileSize = (e.totalSize / 1000000).toFixed(1)
  this.downLoadPercent = (e.downloadedSize / e.totalSize * 100).toFixed(0)
});
dtask.start();

iOS更新实现

直接跳转至App Store

javascript 复制代码
plus.runtime.openURL("appStore地址");

热更新实现步骤

  1. 修改版本号

    更新manifest.json中的版本号(如从1.0.0升级到1.0.1或1.1.0)

  2. 生成升级包

    在HBuilderX中:菜单->发行->原生App-制作移动App资源升级包(wgt)

  3. 部署更新

    将wgt包上传至服务器,在代码中实现版本检测和更新逻辑

javascript 复制代码
uni.downloadFile({
  url: "wgt地址",
  success: (downloadResult) => {
    uni.showLoading({
      title: '更新中'
    })
    if (downloadResult.statusCode === 200) {
      uni.hideLoading();
      
      plus.runtime.install(downloadResult.tempFilePath, {
        force: true  // 是否强制更新
      }, function() {
        console.log('install success...');
        setTimeout(() => {
          plus.runtime.restart();
        }, 0)
      }, function(e) {
        console.error(e);
      });
    } else {
      console.error('download fail...');
    }
  }
});

注意事项

  1. 开发阶段使用HBuilder应用信息,需打包自定义基座或正式包测试
  2. 使用plus.runtime.getProperty()获取manifest版本信息而非plus.runtime.version
  3. 安装wgt包后必须调用plus.runtime.restart()使更新生效
  4. 使用条件编译限定仅在App平台执行更新逻辑
相关推荐
成都大菠萝7 小时前
Android Car CarProperty 车辆信号链路
android
敲代码的鱼7 小时前
PDF 预览与签名批注写回 支持安卓 iOS 鸿蒙 UTS插件
android·前端·ios
时光足迹9 小时前
uni-app 视频通话实战:康复师与患者视频问诊的 6 个致命 Bug 与解决方案
android·ios·uni-app
时光足迹10 小时前
腾讯云 TRTC UniApp SDK 从入门到上线
前端·vue.js·uni-app
时光足迹10 小时前
uni-app 里把加密视频嵌入页面播放?我分析了 4 种方案,只有 1 种接近完美
前端·vue.js·uni-app
时光足迹10 小时前
JPush UniApp UTS 插件完全参考手册:API、事件与厂商通道一网打尽
vue.js·ios·uni-app
时光足迹10 小时前
极光推送全攻略(下):uni-app 代码实现与 iOS 排查实战
vue.js·ios·uni-app
时光足迹10 小时前
极光推送全攻略(上):被iOS证书折磨了三天,我写了一份前端也能看懂的避坑指南
前端·ios·uni-app
Coffeeee13 小时前
闲聊几句,Android老哥们,你们多久没做技改需求了
android·程序员·代码规范
萝卜er14 小时前
Fragment 生命周期与状态恢复-《Android深水区(四)》
android