it编程 > 编程语言 > Javascript

uni-app实现热更新的详细操作步骤

3人参与 2025-04-24 Javascript

一. 背景

随着 app 成功上架,可能更新频率往往会越来越高。传统的应用更新方式要求用户重新下载并安装应用,这不仅耗费用户大量时间、流量,还严重影响用户体验。为了提升用户体验,热更新技术应运而生,为用户带来了更加便捷高效的更新体验。

二. 什么是热更新?

uni-app 热更新是一项强大的技术,无需重新安装应用,就能动态更新应用的内容。它可以在应用持续运行的状态下,对功能、样式以及各类资源进行升级,显著提升用户体验,大幅缩短用户等待时间,同时有效降低应用安装与更新的成本。

简而言之,uni-app app 有两种更新方式:

uni-app 热更新的实现流程如下:

三. 生成 wgt

1. 前提条件

等等具备了一系列应用上架的前提条件,不再赘述。

2. 修改版本号

首先,需要更新 manifest.json 中的版本号。比如之前是 1.0.0,那么新版本应该是 1.0.1 或 1.1.0。要大于现有的版本号。

3. 打包 wgt 包

在 hbuilderx 中打包升级包(wgt)

点击菜单->发行->app-制作应用 wgt 包

打包结束会在控制台输出 wgt 升级包的具体位置

四. 安装 wgt

安装应用资源升级包(wgt)通常需要服务端与客户端配合完成,下面以本地测试过程中的操作举例说明:

1. 服务端

上传资源:

将上面生成的 wgt 文件存放在服务器的目录下,例如完整的示例文件地址为: http://www.example.com/files/demo_app_202504210407.wgt

提供检测更新接口:

需约定用于检测升级的接口,示例接口地址为:http://www.example.com/api/checkversion

注意:服务端的具体判定逻辑,需根据自身业务需求灵活调整。

该部分内容不做重点讲述!

2. 客户端

客户端需要在合适的场景下主动检测升级,如果发现有新版的 wgt 资源包,需要下载到本地进行安装,一般在应用启动的时候检测一次即可。

在 app.vue 的 onlaunch 中进行检测升级,代码如下:

// #ifdef app-plus
plus.runtime.getproperty(plus.runtime.appid, function (widgetinfo) {
  uni.request({
    url: 'http://www.example.com/api/checkversion',
    data: {
      version: widgetinfo.version,
      name: widgetinfo.name
    },
    success: result => {
      const data = result.data
      if (data.update && data.wgturl) {
        uni.downloadfile({
          url: data.wgturl,
          success: downloadresult => {
            if (downloadresult.statuscode === 200) {
              plus.runtime.install(
                downloadresult.tempfilepath,
                {
                  force: false
                },
                function () {
                  // 下载资源成功,重启应用
                  plus.runtime.restart()
                },
                function (e) {
                  // 下载资源失败
                }
              )
            }
          }
        })
      }
    }
  })
})
// #endif

这段代码主要实现了:

注意:代码逻辑仅做了核心演示,实际情况下可以加入错误处理,比如在 uni.requestuni.downloadfile 里添加错误处理逻辑,从而更好地捕获和处理请求与下载过程中出现的错误。

五. 注意事项

如果自测没问题,可以在 manifest 中配置忽略提示:

//...
"app-plus": {
    "compatible": {
        "ignoreversion": true //true表示忽略版本检查提示框,hbuilderx1.9.0及以上版本支持
    },
//....
}

六. 热更新不支持的情况

七. 热更新是否影响应用审核

应用市场出于防止开发者未经审核向用户提供违法内容的考虑,大多对热更新持谨慎态度。

然而,热更新在实际开发中应用广泛,无论是原生开发还是跨平台开发领域皆是如此。

apple 曾封禁过 jspatch,但并未对其他热更新方案如 cordova、react native、dcloud 进行打击。封禁 jspatch 主要是因其存在严重安全漏洞,可能被黑客利用来篡改其他 app 的数据。

使用热更新时,需注意以下几点:

只要遵循这些规则,应用使用热更新通常不会出现问题。

以上就是uni-app实现热更新的详细操作步骤的详细内容,更多关于uni-app热更新的资料请关注代码网其它相关文章!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

React中控制子组件显示隐藏的两种方式及对比详解

04-24

前端实现视频文件动画帧图片提取完整教程

04-24

基于Vue+Node.js实现埋点功能全流程

04-24

JavaScript实现字符串转字符数组的两种方式

04-24

NodeJS的使用与NPM包管理器详解

04-24

前端JavaScript跳转页面的几种方法以及区别详解

04-24

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论