• uniapp开发实现 app热更新


    啊~时隔多月终于闲下来了。最近整理了下资料发现热更新在app开发是经常见的,基本必备而且确实很方便,所以就总结了点东西给大家看看,有问题可以一起讨论

    一、实现热更新需要那些东西

    需要服务器存放更新包资源,后端提供接口用于检测当前版本是否为最新版本。(增删改查) 热更新的流程其实很简单,如下图所示

    graph LR
    A(用户进入应用) --> C{检测是否有更新}
    C --> D(需要更新)
    D --> E(请求资源更新包)
    E --> F(下载安装)
    F --> I(下载完成重启)
    F --> J(取消下载)
    C -->H(不需要更新)
    H-->G(正常运行)
    I --> G
    J --> G 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    二、具体流程代码

    1.获取当前应用app版本

    // 保存 app 版本信息
    // #ifdef APP-PLUS
    plus.runtime.getProperty(plus.runtime.appid, (widgetInfo)=> {// console.log('widgetInfo', widgetInfo);this.version = widgetInfo.version;
    });
    // #endif 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.获取服务器上更新包的资源(包含下载链接,更新包版本),比较当前版本是否为最新版本,不是则弹出提示更新最新版本

    checkWgtFun() {//loginApi.getPatchManage() 获取更新包接口loginApi.getPatchManage().then(res=> {console.log('检查更新包', res);if(res.code == 200) {let result = res.data.versionNum // 更新包版本if(this.version.substr(0, 3) * 1 >= result.substr(0, 3) * 1){this.$toast('当前为最新版本');return} if(this.version.replace(/\./g, "") * 1 >= result.replace(/\./g, "") * 1){this.$toast('当前为最新版本');return}uni.showModal({title: '提示',content: '发现有新版本可以升级',cancelText: '取消更新',confirmText: '立即更新',success: res1 => {if (res1.confirm) {console.log('用户点击确定');// 补丁下载安装// this.versionNum=res.data.versionNumthis.downWgt(res.data.patchUrl)} else if (res1.cancel) {console.log('用户点击取消');}},fail: (err
    • 相关阅读:
      ES6 - promise 与 async / await【Promise 封装丐版 Ajax】
      MySql出错点
      vue之Error: Unknown option: .devServer.
      swin Transformer
      关于Java并发多线程的一点思考
      ubuntu 小技巧
      个人信息保护专业人员认证(CCRC-PIPP)
      Excel VSTO开发1-VSTO简介
      Linux 主机间ssh相互免密
      [附源码]java毕业设计小锅米线点餐管理系统
    • 原文地址:https://blog.csdn.net/pfourfire/article/details/127557440