javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > uni-app热更新

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

作者:前端梦工厂

随着 App 成功上架,可能更新频率往往会越来越高,传统的应用更新方式要求用户重新下载并安装应用,这不仅耗费用户大量时间、流量,还严重影响用户体验,为了提升用户体验,热更新技术应运而生,所以本文介绍了uni-app实现热更新的详细操作步骤,需要的朋友可以参考下

一. 背景

随着 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热更新的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文