在App.vue中

onLaunch: function() {
console.log('App Launch');
// #ifdef APP-PLUS
this.getVersion();
// #endif
}

App.vue中的methods的方法们

        // 获取APP版本号
getVersion() {
plus.runtime.getProperty(plus.runtime.appid, wgtinfo => {
var version = wgtinfo.version;
var version_num = version.split('.').join('');
console.log(version_num, '版本号');
this.getAppVersion(version_num);
});
},
// 访问更新接口
getAppVersion(version) {
let that = this;
uni.setStorageSync('version', version);
// 获取版本号
var system = uni.getSystemInfoSync().platform;
// 是否更新接口(数据仅为我司定义,请勿照搬)
that.$request
.get('store/system/getAppVersion', {
system: system,
version_id: version
})
.then(res => {
console.log(res, '检测更新');
if (res.data.errno == 0) {
if (res.data.info != '') {
var type = res.data.info.version_type; //type判断为整包更新还是热更新(整包为.apk,热更新为.wgt)
var down_url = res.data.info.down_url; //更新包下载地址
uni.showModal({
//提醒用户更新
title: 'APP更新提示',
content: res.data.info.version_remark, //更新接口提示的信息
success: res => {
// modal中点击确定
if (res.confirm) {
// 下载更新方法
that.downLoadFileAndInstall(down_url, type);
}
},
fail: error => {
//发生错误
}
});
} else {
// 不需要更新
}
} else {
//发生错误
}
});
},
// 下载更新包
downLoadFileAndInstall(down_url, type) {
// type仅为我司定义
if (type == 1) {
//热更新
var that = this;
plus.downloader
.createDownload(down_url, { filename: '_doc/update/' }, function(d, status) {
if (status == 200) {
plus.nativeUI.toast('下载wgt文件成功,安装中');
that.installWgt(d.filename); // 安装wgt包
} else {
plus.nativeUI.toast('下载wgt失败!');
}
plus.nativeUI.closeWaiting();
})
.start();
} else if (type == 0) {
// 整包
var osname = plus.os.name;
if (osname == 'Android') {
// 安卓打开网页下载
plus.runtime.openURL(down_url);
} else {
// ios打开应用商店
var appleId = 123456789; //apple id 在 app conection 上传的位置可以看到 https://appstoreconnect.apple.com/
plus.runtime.launchApplication(
{
action: `itms-apps://itunes.apple.com/cn/app/id${appleId}?mt=8`
},
function(e) {
console.log('Open system default browser failed: ' + e.message);
}
);
}
}
},
//更新资源包
installWgt(path) {
plus.runtime.install(
path,
{},
function() {
plus.nativeUI.toast('应用资源更新完成!', function() {
plus.runtime.restart();
});
},
function(e) {
plus.nativeUI.toast('安装wgt文件失败[' + e.code + ']:' + e.message);
}
);
}

uniapp中IOS安卓热更新和整包更新app更新的更多相关文章

  1. uniapp热更新和整包升级

    一. uniapp热更新  (热更新官方文档) 很多人在开发uniapp的时候, 发现热更新失效问题(或者热更新没有更新manifest里的新增模块,SDK,原生插件包括云插件), 其实uniapp官 ...

  2. H5 移动端开发中 ios/安卓坑 和经验总结

    1. ios new时间对象,需要用逗号隔开传日期的方式, 不支持 new Date('2019-03-01 08:00:00') 格式: 支持以下两种方式: 2. ios个别版本对fixed的属性的 ...

  3. 【uniapp 开发】uni-app 资源在线升级/热更新

    注:本文为前端代码资源热更新.如果是整包升级,另见文档 https://ask.dcloud.net.cn/article/34972 HBuilderX 1.6.5 起,uni-app 支持生成 A ...

  4. 安卓热更新之Nuwa实现步骤

    安卓热更新之Nuwa实现步骤 最近热更新热修复的功能在安卓应用上越发火热,终于我的产品也提出了相应的需求. 经过两天的研究,搞定了这个功能,在这里还要多谢大神们的博客,大神们的原理分析很到位,不过对于 ...

  5. iOS 学习笔记二【cocopods安装使用和安装过程中遇到的问题及解决办法】【20160725更新】

    在osx 10.11之前cocopods问题不多,但是升级到11之后的版本,之前的cocopods大多用不了,需要重新安装,对于我这种使用测试版系统的技术狂来说,每次都需要重新安装很多东西, 当然,c ...

  6. uniapp 打包IOS 更新AppStore版本

    Hello 你好,我是大粽子. 最近随着新版本UI的发布APP也随之更新,随之而来的也就是IOS程序提审步骤,这次我详细的截图了每一个步骤,如果你正好也需要那么跟着我的节奏一步步来肯定是没问题的. 提 ...

  7. 在Unity3D中实现安卓平台的本地通知推送

    [前言] 对于手游来说,什么时候需要推送呢?玩过一些带体力限制的游戏就会发现,我的体力在恢复满后,手机会收到一个通知告诉我体力已完全恢复了.这类通知通常是由本地的客户端发起的,没有经过服务端. 在安卓 ...

  8. IOS开始对App Store大扫除:你的APP更新了吗?

    成都亿合科技小编从北京商报了解到,对于开发APP应用的要注意啦,IOS要开始对App Store大扫除:你的APP更新了吗? 日前苹果App Store的开发者们发送邮件,表示将实施一个持续评估应用行 ...

  9. WPF C#仿ios 安卓 红点消息提示

    原文:WPF C#仿ios 安卓 红点消息提示 先把效果贴出来,大家看看. 代码下载地址: http://download.csdn.net/detail/candyvoice/9730751 点击+ ...

随机推荐

  1. 客户端回调 Watcher?

    客户端 SendThread 线程接收事件通知,交由 EventThread 线程回调 Watcher. 客户端的 Watcher 机制同样是一次性的,一旦被触发后,该 Watcher 就失效了.

  2. Apollo代码学习(七)—MPC与LQR比较

    前言 Apollo中用到了PID.MPC和LQR三种控制器,其中,MPC和LQR控制器在状态方程的形式.状态变量的形式.目标函数的形式等有诸多相似之处,因此结合自己目前了解到的信息,将两者进行一定的比 ...

  3. Amaze UI 模版中心上线丨十几款高质量优秀模版免费提供!

    Amaze UI模版中心终于上线了,目前汇聚了包含企业门户.新闻资讯.管理后台等多个领域的模版,全都可以免费下载. Amaze UI模版中心后续还会增加更多的模版以及领域,请各位持续关注. 模版中心的 ...

  4. IE中input标签密码框与文本框宽度不一样问题

    前言 在项目登录界面中有账户和密码的输入框,在Chrome中显示是正常的(本人使用的是Chrome浏览器,平时不用IE).等部署到客户的服务器上,访问时发现一个问题,在IE浏览器中文本框与密码框的宽度 ...

  5. python-使用函数求特殊a串数列和

    给定两个均不超过9的正整数a和n,要求编写函数fn(a,n) 求a+aa+aaa++⋯+aa⋯aa(n个a)之和,fn须返回的是数列和 函数接口定义: 1 fn(a,n) 2 其中 a 和 n 都是用 ...

  6. String能变化吗?和StringBuffer的区别是什么

    [新手可忽略不影响继续学习]看 过上面例子的童鞋一定会觉得很奇怪,s = s + s1.charAt(i); 马克-to-win, s不是老在变化吗?其实s = "";时,虚拟机会 ...

  7. java之String字符串根据指定字符转化为字符串数组

    public static void main(String[] args){ String str="护肤,药品,其他"; String temp[]; temp=str.spl ...

  8. Ubuntu 安装cmake

    Ubuntu 安装 cmake 官网 https://cmake.org 下载地址 https://cmake.org/download/ 参考文档 -<ubuntu下更新cmake版本> ...

  9. SpringMVC踩坑3——前后端传值问题

    在前端页面点击修改,同时把需要修改的ID传到后端,后端根据ID去修改具体数据 这是前端代码 <a href="${pageContext.request.contextPath}/bo ...

  10. InnoDB两次写

    partial page write问题: 默认情况下,innodb的一个页面时16k大小,其数据校验也是针对这16k来校验的,将数据写入磁盘是以页面为单位的.文件系统是以4k为单位写入的,机械磁盘是 ...