uni-app 实现热更新 (服务端为php)
热更新就是打开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)相关推荐
- 乐变黄杲:当前如何选择App热更新服务
在2017年6月这个时间点,我们有必要谈谈热更新这个技术到底何去何从. \\ 上半年苹果的两次警告,通知iOS开发者在6月12日前移除热更新相关代码,否则将会下架相关App,一时间风声鹤唳,那么App ...
- 送餐app+php,订餐APP源码Food Delivery App v2.1(客户端+服务端)
android订餐APP源码Food Delivery App v2.1(客户端+服务端),包含android客户端源码.php+mysql服务端源码. Version 2.1 Food Delive ...
- 游戏交流社区BBS论坛APP客户端和网页服务端设计 毕业论文+前后端源码及数据库文件
下载地址:https://download.csdn.net/download/m0_63680064/36065411 项目介绍: 游戏交流社区BBS论坛APP客户端和网页服务端设计 毕业论文+前后 ...
- Hybrid App 跨平台热更新方案实践 附带源码
前言 移动开发的跨平台与快速发布一直是开发者的追求,也是技术的一个发展趋势,现在各大厂开始有了自己的大前端团队,所以我们也开始了自己的探索,目前来说主要有两种思路: Hybrid App 代表:Cor ...
- android 自动更新 服务端,搭建android版本更新服务器使用android系统自带的DownloadManager下载文件...
这几天想自己做一个文件更新的功能,但是由于不知道怎样写服务端,所以一直没有去做,后来发现原来服务端编写简直是太简单了,所以今天就实现了 版本更新的这样一个功能. 一搭建版本更新服务器: 搭建这个一个服 ...
- uni-app开发APP实现热更新和整包更新
热更新(.wgt):只有前端资源或模块进行调整,整个App结构不发生变化,那只需要更新这一部分资源,避免用户重新下载整个App.通过 HBuilderX 打包 .wgt 包即可 整包更新(.apk): ...
- 客户机服务器文件更新,服务端数据更新,如何更新客户端缓存
我是服务端 被客户端吐槽说我的API接口没有数据版本号(用来表示后台数据是否有更新),导致客户端缓存不知道什么时候更新,每次都要请求服务端数据 对此有几点疑虑,特来请教各位大拿 客户端缓存更新是否真的 ...
- android 快传 源码_最新安卓仿茄子快传APP源码包括服务端源码Android开发快传类项目源码全套...
适使用范围: 安卓APP茄子快传源码 Android项目源码相似茄子快传的快传项目包括服务端 运行环境: Android app 源码详细: 本项目是一个基于安卓的相似茄子快传的项目源码,包括安卓 ...
- H5 App实现热更新,不需要重新安装app
直接上代码吧,你竟然搜到了我的文章就应该知道了,为什么要热更新 //app热更新下载 //假定字符串的每节数都在5位以下 function toNum(a) {//也可以这样写 var c=a.spl ...
- IOS IAP APP内支付 Java服务端代码
场景:作为后台需要为app提供服务,在ios中,app内进行支付购买时需要进行二次验证. 基础:可以参考上一篇转载的博文In-App Purchase(iap)快速指南了解原理. 直接先上服务端测试通 ...
最新文章
- Spring Security基于角色的权限管理
- 感恩被救赎——爱是恒久忍耐
- caffe 框架梳理(待续)
- LeetCode 77.组合求和
- datagrid 什么时候结束编辑_孕吐到底什么时候结束
- 由导师决定硕博士能否毕业?教育部:将充分采纳!
- ipmitool 设置网关_IPMI 接口配置
- [Python] 矩阵拼接 np.c_[a,b]和np.r_[a,b]
- js中的this详解
- Apache HttpClient4使用教程
- xul eclipse插件_将HTML元素添加到XUL插件
- 深度学习安装笔记(二)显卡、显卡驱动、CUDA 的关系以及显卡驱动升级
- ubuntu 16.04 单用户____修改忘记密码
- 小甲鱼学python学习笔记
- Maven 官网查找依赖包
- 变焦光学系统工作原理及初始结构设计方法
- 64位Ubuntu系统安装Chrome浏览器
- 软件测试网上课程设计,软件测试 软件测试 《软件测试》课程设计.docx
- Vmware安装Centos及Linux的介绍,命令
- Matplotlib画蜡烛图