1.封装热更新方法

import {httpRequest,hostURL
} from '@/utils/httpRequest'
async function getNewVersion( success, fail) {let params = {};if (uni.getSystemInfoSync().platform == "ios") {params = {appType: "storeApp",client: "ios",};} else {params = {appType: "storeApp",client: "az",};}var [err, res] = await uni.request({url: hostURL + '/data-dist/api/dist/appHotUpdate/version',data: params});if (res && success) {success(res.data);}if (err && fail) {fail(err);}
}function update(fileName) {let downURL = hostURL + "/upload-app/" + fileName;console.log('下载地址', downURL, hostURL);//后台显示进度条let dtask = plus.downloader.createDownload(downURL, {},function(d, status) {//下载完成uni.showModal({title: "更新提示",content: "新版本已经准备好,是否更新应用?",success: (res) => {if (res.confirm) {install(d, status);}},});});start(dtask);
};function start(dtask) {try {dtask.start(); //开启下载任务let prg = 0;let showLoading = plus.nativeUI.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,});}
};function install(d, status) {//下载完成if (status === 200) {plus.runtime.install(d.filename, {force: false}, function() {plus.nativeUI.closeWaiting();plus.nativeUI.alert("应用资源更新完成!是否重启应用!", function() {plus.runtime.restart();});}, function(e) {plus.nativeUI.closeWaiting();console.log("安装wgt文件失败[" + e.code + "]:" + e.message);plus.nativeUI.alert("安装wgt文件失败[" + e.code + "]:" + e.message);});} else {uni.showToast({title: "下载失败",mask: false,duration: 1500,});}
};function close(version) {try {console.log( '保存要跳过的版本', version)uni.setStorageSync('skip_version', version);} catch (e) {// error}
};function signOut() {// #ifdef APP-PLUSplus.runtime.quit();// #endif
}export const getUpdate = function(oldversion, back) {getNewVersion( function(res) {console.log('获取热更新版本信息', res, oldversion, back);if (res.succ == 1 && res.result) {let result = res.result;if(back){try {const value = uni.getStorageSync('skip_version');console.log( '是否跳过当前版本',value, result.version)if (value && value === result.version) {return;}} catch (e) {}}if (result.version != oldversion) {console.log('有新版本要更新', result);result.back = back;plus.nativeUI.confirm(result.remark, function(e) {if (e.index === 0) {update(result.fileName);} else if (result.strategy == '强制') {signOut();} else if (result.strategy == '推荐') {close(result.version);}}, {"title": "新版本","buttons": ["立即更新", result.strategy == '强制' ? "退出应用" : "暂不更新"]});} else if (!back) {plus.nativeUI.alert("当前已是最新版本!");}}else if (!back) {plus.nativeUI.alert("当前已是最新版本!");}});
}

2.调用热更新方法  (放在App.vue onLaunch生命周期中,在未登录之前就调用)

<style lang="scss">/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */@import "uview-ui/index.scss";
</style>
<script>import {getUpdate} from '@/utils/hotUpdate';export default {onLaunch: function() {console.log('App Launch');// #ifdef APP-PLUSplus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {uni.setStorageSync("当前版本", widgetInfo.version);let oldversion = widgetInfo.version;console.log("我的版本login", oldversion);getUpdate(oldversion, true);});// #endif},onShow: function() {console.log('App Show')},onHide: function() {console.log('App Hide')},globalData: {test: ''},methods: {},}
</script>

再附上后台管理热更新的图片

自己项目中的代码,真实有效!

uniapp 安卓ios端热更新相关推荐

  1. yooasset+hybridclr在android,ios端热更新测试

    Hybridclr+YooAsset+Unity Run android+iOS 这个工程是用来学习YooAsset和Hybridcl,来做unity资源和代码热更新, 实现了android 和ios ...

  2. uni-app 安卓 ios 更新方案

    uni-app 更新方案 安卓: 1.热更新 2.全局更新 查看下方3个网站后 相信你可以解决 热更新和 全局更新问题了. 具体的注意事项 在下方网站中都有介绍了. 官方案例 自己写的 APP 更新 ...

  3. 移动端热更新方案(iOS+Android)

    PPT资源包含iOS+Android 各种方案分析:https://github.com/qiyer/Share/blob/master/%E7%83%AD%E6%9B%B4%E6%96%B0%E5% ...

  4. 抖音成牛年春晚独家合作伙伴;微信8.0安卓/IOS版正式更新;孙正义辞去软银董事长…

    [1]跃亭造车梦延续?珠海正与法拉第未来洽谈融资合作 1 月 27 日消息,据财联社,珠海市相关部门正与法拉第未来洽谈FF融资及落地合作,"正在前期接触,具体细节正在谈,国资委统筹注资方面的 ...

  5. 【已解决】(uni-app)IOS 端 H5 应用无法发起请求,请求状态码为0,错误描述为request:fail

    [已解决](uni-app)IOS 端 H5 应用无法发起请求,请求状态码为0,错误描述为request:fail 目录 [已解决](uni-app)IOS 端 H5 应用无法发起请求,请求状态码为0 ...

  6. UniAPP 安卓应用版本自动更新及下载安装

    一. 前言 近期进行 Uniapp 的开发,在项目发布的最后需要实现版本的自动检测和更新下载功能 特地在此进行文章的整理,以方便道友们减少前进道路上的坎坷,多谢指摘 - 注: 本次指导,以更新 安卓应 ...

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

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

  8. android os苹果手机助手,深度系统V20(1003)内测招募:新增手机助手,支持安卓/iOS端...

    IT之家9月28日消息深度操作系统今天发布深度操作系统 20(1003)内测活动招募说明,IT之家获悉,本次操作系统将新增手机助手,支持安卓和iOS端,方便管理手机应用.文件等. 内测说明地址:htt ...

  9. 苹果屏蔽更新_苹果ios端屏蔽更新的描述文件复活了

    崇尚专注 乐于分享 愿为您带来生活中的便利 每晚8点期待您的到来捧场 目前我们的公众号已经为上万人提供了帮助,新来的小伙伴,如果你不想错过每一期的资源,需要获取往期分享的资源,可以在公众号菜单栏找到& ...

  10. 社交系统ThinkSNS+第4阶段IOS端研发更新发布播报

    2019独角兽企业重金招聘Python工程师标准>>> 研发发布版本号:V1.8 发布时间:2018年5月15日星期二 本次发布类型:移动端优化,新增功能发布 社交系统ThinkSN ...

最新文章

  1. C语言格式控制符和转义字符
  2. 安装linux系统报softlock,soft lockup 解决思路
  3. python英语-我们用程序整理出了一份Python英语高频词汇表,拿走不谢!
  4. 一个关于malloc的面试题
  5. web developer tips (74):在 Visual Studio 2008设计器里添加或移除AJAX Extenders
  6. 【Android】Eclipse JNI开发
  7. Boost.Python实现Python C/C++混合编程
  8. Linux加密框架crypto AES代码相关
  9. iOS实现字符串动画
  10. 安卓系统双屏异显_Android实现双屏异显
  11. 【转】vue双向绑定原理分析
  12. android桌面工具,不一样的Android桌面小工具
  13. 分布式光伏系列:分布式光伏电站 运行与维护方案一览(zz)
  14. 基于RT-Thread的光照强度传感器BH1750FVI 软件包
  15. Docker 配置阿里云加速
  16. pd.diff()函数详解
  17. OpenCV3实现橡皮擦功能[画板]
  18. 解决jmeter压测试时java.net.SocketException: Socket closed异常
  19. 共享安装 cacti 过程中的一些经历 cacti 中文-linux - sun solaris
  20. (一)mplayer与ffmpeg的调用过程

热门文章

  1. 计算机图形学中的抗锯齿
  2. IP命令--mesh路由重启后IP地址被重新分配的问题
  3. [BZOJ2286] [Sdoi2011]消耗战
  4. 计算机中所占百分数用哪个函数,Excel中Percentrank函数的使用-计算所占百分比
  5. Windows 在Windows中关闭/最小化窗口的几种快捷方法
  6. 厚积‘博’发,成就卓越IT人生!
  7. Activiti目录(五)驳回、重新发起、取消流程
  8. mysqldump 使用 --set-gtid-purged
  9. python怎么安装re模块_python模块模块re
  10. mac 设置网页字体