热更新就是打开App时遇到的即时更新,可以免重新下载安装来更新我们app上的内容

下面直接贴 uni-app 热更新步骤~

1:在HBuilder 打包热更需要用到的 wgt 包文件

wgt包上传到你的服务器,让app可以下载

2: 我的服务端代码

<?php$version = htmlspecialchars($_GET['version']);
$name = htmlspecialchars($_GET['name']);//todo 此处可以根据用户版本号 app名称 用户uid 来判断要不要让该app更新$arr = array("update" => 1,                        // 是否更新,1为是 其他为否"versionCode" => "1.0.1",             // 版本号"description" => "此次为更新测试哦",   //  更新描述 "upgradeUrl" => "http://.../...wgt"   // 更新地址,就是上个步骤打包的wgt下载地址);// 输出json 给客户端
echo json_encode($arr);die;

3:uni-app 的前端代码

plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {uni.request({url: 'http://.../...php', //你的服务端地址,代码在步骤2data: {version: widgetInfo.version,  // manifest.json 里面的versionname: widgetInfo.name    },success: (result) => {var data = result.data;console.log(data);// 要更新 且有更新包地址if (data.update == 1 && data.wgtUrl) {// 弹出 选择框 让用户选择是否更新,uni.showModal({title: '版本更新' + data.versionCode,content: data.description,confirmText: "更新",showCancel: true,success: function(e) {if (e.confirm) {if (plus.os.name.toLowerCase() == 'ios') {// 跳转到下载页面// plus.runtime.openURL(data.upgradeUrl)uni.downloadFile({url: data.upgradeUrl,success: (downloadResult) => {if (downloadResult.statusCode === 200) {plus.runtime.install(downloadResult.tempFilePath, {force: true}, function() {console.log('install success...');plus.runtime.restart();}, function(e) {console.error('install fail...');});}}});} else {var dtask = plus.downloader.createDownload(data.upgradeUrl, {},function(d, status) {uni.showToast({title: '下载完成',mask: false,duration: 2000});console.log(d.filename);console.log(d.tempFilePath);console.log(plus.io.convertLocalFileSystemURL(d.filename));// 下载完成  安装 force 一定要设置为true,更新完成后 重启应用                                                     if (status == 200) {                                                                                                              plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {force: true}, function() {plus.runtime.restart();}, function(error) {uni.showToast({title: '安装失败-01',mask: false,duration: 1500});})} else {uni.showToast({title: '更新失败-02',mask: false,duration: 1500});}});try {dtask.start(); // 开启下载的任务var prg = 0;var showLoading = plus.nativeUI.showWaiting("正在下载"); //创建一个showWaiting对象 dtask.addEventListener('statechanged', function(task,status) {// 给下载任务设置一个监听 并根据状态  做操作switch (task.state) {case 1:showLoading.setTitle("正在下载");break;case 2:showLoading.setTitle("已连接到服务器");break;case 3:prg = parseInt((parseFloat(task.downloadedSize) /parseFloat(task.totalSize)) *100);showLoading.setTitle("  正在下载" + prg + "%  ");break;case 4:plus.nativeUI.closeWaiting();//下载完成break;}});} catch (err) {plus.nativeUI.closeWaiting();uni.showToast({title: '更新失败-03',mask: false,duration: 1500});}}}}})}}});});

这样就可以实现热更拉 不过热更完得重启才能使用,苹果还没试过 安卓亲测 没问题

end~~

uni-app 实现热更新 (服务端为php)相关推荐

  1. 乐变黄杲:当前如何选择App热更新服务

    在2017年6月这个时间点,我们有必要谈谈热更新这个技术到底何去何从. \\ 上半年苹果的两次警告,通知iOS开发者在6月12日前移除热更新相关代码,否则将会下架相关App,一时间风声鹤唳,那么App ...

  2. 送餐app+php,订餐APP源码Food Delivery App v2.1(客户端+服务端)

    android订餐APP源码Food Delivery App v2.1(客户端+服务端),包含android客户端源码.php+mysql服务端源码. Version 2.1 Food Delive ...

  3. 游戏交流社区BBS论坛APP客户端和网页服务端设计 毕业论文+前后端源码及数据库文件

    下载地址:https://download.csdn.net/download/m0_63680064/36065411 项目介绍: 游戏交流社区BBS论坛APP客户端和网页服务端设计 毕业论文+前后 ...

  4. Hybrid App 跨平台热更新方案实践 附带源码

    前言 移动开发的跨平台与快速发布一直是开发者的追求,也是技术的一个发展趋势,现在各大厂开始有了自己的大前端团队,所以我们也开始了自己的探索,目前来说主要有两种思路: Hybrid App 代表:Cor ...

  5. android 自动更新 服务端,搭建android版本更新服务器使用android系统自带的DownloadManager下载文件...

    这几天想自己做一个文件更新的功能,但是由于不知道怎样写服务端,所以一直没有去做,后来发现原来服务端编写简直是太简单了,所以今天就实现了 版本更新的这样一个功能. 一搭建版本更新服务器: 搭建这个一个服 ...

  6. uni-app开发APP实现热更新和整包更新

    热更新(.wgt):只有前端资源或模块进行调整,整个App结构不发生变化,那只需要更新这一部分资源,避免用户重新下载整个App.通过 HBuilderX 打包 .wgt 包即可 整包更新(.apk): ...

  7. 客户机服务器文件更新,服务端数据更新,如何更新客户端缓存

    我是服务端 被客户端吐槽说我的API接口没有数据版本号(用来表示后台数据是否有更新),导致客户端缓存不知道什么时候更新,每次都要请求服务端数据 对此有几点疑虑,特来请教各位大拿 客户端缓存更新是否真的 ...

  8. android 快传 源码_最新安卓仿茄子快传APP源码包括服务端源码Android开发快传类项目源码全套...

    适使用范围:  安卓APP茄子快传源码 Android项目源码相似茄子快传的快传项目包括服务端 运行环境:  Android app 源码详细: 本项目是一个基于安卓的相似茄子快传的项目源码,包括安卓 ...

  9. H5 App实现热更新,不需要重新安装app

    直接上代码吧,你竟然搜到了我的文章就应该知道了,为什么要热更新 //app热更新下载 //假定字符串的每节数都在5位以下 function toNum(a) {//也可以这样写 var c=a.spl ...

  10. IOS IAP APP内支付 Java服务端代码

    场景:作为后台需要为app提供服务,在ios中,app内进行支付购买时需要进行二次验证. 基础:可以参考上一篇转载的博文In-App Purchase(iap)快速指南了解原理. 直接先上服务端测试通 ...

最新文章

  1. Spring Security基于角色的权限管理
  2. 感恩被救赎——爱是恒久忍耐
  3. caffe 框架梳理(待续)
  4. LeetCode 77.组合求和
  5. datagrid 什么时候结束编辑_孕吐到底什么时候结束
  6. 由导师决定硕博士能否毕业?教育部:将充分采纳!
  7. ipmitool 设置网关_IPMI 接口配置
  8. [Python] 矩阵拼接 np.c_[a,b]和np.r_[a,b]
  9. js中的this详解
  10. Apache HttpClient4使用教程
  11. xul eclipse插件_将HTML元素添加到XUL插件
  12. 深度学习安装笔记(二)显卡、显卡驱动、CUDA 的关系以及显卡驱动升级
  13. ubuntu 16.04 单用户____修改忘记密码
  14. 小甲鱼学python学习笔记
  15. Maven 官网查找依赖包
  16. 变焦光学系统工作原理及初始结构设计方法
  17. 64位Ubuntu系统安装Chrome浏览器
  18. 软件测试网上课程设计,软件测试 软件测试 《软件测试》课程设计.docx
  19. Vmware安装Centos及Linux的介绍,命令
  20. Matplotlib画蜡烛图

热门文章

  1. Java私有构造方法
  2. 一、微信小程序开发详解
  3. 联想电脑如何进入BIOS
  4. vue 树结构 的 穿梭框
  5. 2020-10-12:在做分布式集群时候一般会产生什么问题?
  6. Redis搭建主从复制实现高可用
  7. ResNext残差结构理解
  8. 深入理解Spark SQL原理
  9. 使用Grid布局制作拼图小游戏
  10. Android 8.1发送广播受限问题