ionic2 rc2 添加版本更新自动升级功能
不废话,直接上代码
首先安装四个必备的插件:
cordova plugin add cordova-plugin-app-version //获取APP版本
cordova plugin add cordova-plugin-file //文件管理
cordova plugin add cordova-plugin-file-transfer //文件传输
cordova plugin add cordova-plugin-file-opener2 //文件打开
运行上面给出的命令安装好这四个插件,创建一个Porvider用来写更新代码
ionic g provider UpdateAPP
详细更新代码
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
import { Global } from '../providers/global/global'; //这是我个人封装的一个全局类,不必理会
import { LoadingController, AlertController } from 'ionic-angular'; //引入加载框和更新提示框
import { AppVersion, Transfer, FileOpener } from 'ionic-native' //引入更新需要的几个插件
@Injectable()
export class UpdateappProvider {
private appUrl="http://xxx/xxx.apk"; //可以从服务端获取更新APP的路径
constructor(public http: Http, public g: Global, private loadingCtrl: LoadingController, private alertCtrl: AlertController) {
}
//检查版本更新
checkUpdate() {
let execName = 'xxx';
let param = {
APPNAME: 'xxx',
};
//查询当前服务器的APP版本号与当前版本号进行对比
//g.Post是我自己封装一个数据查询类 请自行替换自己的
this.g.Post(execName, param, '', true, true).then((data: Array<any>) => {
console.log(data);
AppVersion.getVersionNumber().then((version) => {
console.log(version);
if (data[].VERSION != version) {
// this.appUrl=data[0].APPURL; //可以从服务端获取更新APP的路径
let updateAlert = this.alertCtrl.create({
title: '提示',
message: '发现新版本,是否立即更新?',
buttons: [{
text: '取消'
}, {
text: '确定',
handler: data => {
this.upgradeApp();
}
}
]
});
updateAlert.present();
}
});
});
}
upgradeApp() {
const fileTransfer = new Transfer();
let uploading = this.loadingCtrl.create({
content: "安装包正在下载...",
dismissOnPageChange: false
});
var targetPath = "/sdcard/Download/CaiLaoBan.apk"; //APP下载存放的路径,可以使用cordova file插件进行相关配置
// var options = {};
uploading.present();
fileTransfer.onProgress((event) => {
//进度,这里使用文字显示下载百分比
// setTimeout(() => {
var downloadProgress = (event.loaded / event.total) * ;
uploading.setContent("已经下载:" + Math.floor(downloadProgress) + "%");
if (downloadProgress > ) {
uploading.dismiss();
}
// }, 100);
/* setTimeout(() => {
uploading.dismiss();
}, 10000);*/
});
//url为服务端地址
//targetPath为设备上的地址
fileTransfer.download(this.appUrl, targetPath, true).then(
(result) => {
uploading.dismiss();
FileOpener.open(targetPath, 'application/vnd.android.package-archive').then(
() => {
});
}
);
}
}
在app.component.ts的构造方法里调用升级代码
//检查应用是否需要更新
updateapp.checkUpdate();
如有问题,欢迎讨论\(^o^)/~
效果:

转载请注明出处:http://www.cnblogs.com/super-cj/p/6279009.html
ionic2 rc2 添加版本更新自动升级功能的更多相关文章
- NSIS:应用软件自动升级功能的探索与实践
原文 NSIS:应用软件自动升级功能的探索与实践 记得以前轻狂曾分享过使用第三方软件实现应用软件自动升级功能 (详细http://www.flighty.cn/html/soft/20110106_1 ...
- Laravel添加代码自动提示功能
在使用Laravel框架的时候,可能会碰上代码无法自动提示的情况,那么如何添加自动提示功能呢? 1,首先在composer.json中加入以下内容: "require": { &q ...
- Android 一s个相对完整的自动升级功能实现代码
由于项目的需要最近做了一个关于Android自动升级的功能,下面将贴出Android手机客户端的完整代码.这段代码参考别的代码居多,由于不满足需求,所以自己仅仅改了一些需要变动的内容,其他功能都是按照 ...
- Android 一个相对完整的自动升级功能实现代码
由于项目的需要最近做了一个关于Android自动升级的功能,下面将贴出Android手机客户端的完整代码.这段代码参考别的代码居多,由于不满足需求,所以自己仅仅改了一些需要变动的内容,其他功能都是按照 ...
- Delphi程序的自动升级功能的实现(AutoUpdate使用指南)
在UtiMnid组件下,利用auAutoUpgrader实现自动升级(已经测试通过) 第一步:下载AutoUpgrader.Pro.v4.6.4. 第二步:打开AutoUpgrader.Pro.v4. ...
- 在Zend Studio中为ThinkPHP添加代码自动提示功能
身边很多朋友都使用ThinkPHP或CodeIgniter等开发框架为自己的项目提高开发效率. 在得力于这些优秀框架良好的设计结构的同时,也头疼于代码的自动完成提示功能没有纯PHP网站那么完善了.经常 ...
- android5.1 Recovery添加从U盘升级功能【转】
本文转载自:http://blog.csdn.net/tfslovexizi/article/details/73835594 之前看到过一个人写了4.4上添加U盘升级功能的博客http://blog ...
- 使用SimpleUpdater实现现有程序升级功能
项目:https://github.com/iccfish/FSLib.App.SimpleUpdater C/S程式一般需要部署在多台机器上,如果程式有变动,需要一台一台重新安装,相当麻烦,如果我们 ...
- java CS结构软件自动升级的实现
前段时间做了一个工具发布给公司的各部门使用后反馈了不少BUG,每次修改后均需要发邮件通知各用户替换最新版本,很不方便,因此后来就写了一个自动升级的功能,这样每次发布新的版本时只需要将其部署到自动升级服 ...
随机推荐
- xlwt模块的使用
前记:Python处理表格时会用到xlwt和xlrd模块 xlwt设置行高:row sheet.row(2).set_style(xlwt.easyxf('font:height 440;')) 13 ...
- 什么是LDAP?
LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,但是简单多了并且可以根据需要定制.与X ...
- HBuild 连接安卓手机
设备:一部电脑.一部安卓手机.一条数据线 1. 数据线连接电脑和安卓手机: 2. 安卓手机--> 设置 -- > 开发者选项 --> 点进去,找到USB调试并且打开,例: ...
- JS回调函数中的this指向(详细)
首先先说下正常的this指向问题 什么是this:自动引用正在调用当前方法的.前的对象. this指向的三种情况 1. obj.fun() fun中的this->obj,自动指向.前的对 ...
- 超详细的PDF Expert的注释功能介绍
今天,要给大家很是详细地介绍一下PDF Expert(一款专门在mac上使用的PDF阅读编辑器)的注释功能,让有点健忘的各位小伙伴们通过积极地与文本交互,从而记住更多的专业书内容. 具体使用方法请看以 ...
- centos7与centos6命令区别
CentOS 7 vs CentOS 6的不同 (1)桌面系统[CentOS6] GNOME 2.x[CentOS7] GNOME 3.x(GNOME Shell) (2)文件系统[CentOS ...
- SQL语句全解,非常棒!
链接自W3school非常详细的SQL教程 http://www.w3school.com.cn/sql/index.asp
- WMI设置有线网卡IP地址
一.通过WMI获取物理适配器序号 NetEnabled: 是否启用了适配器,True为启用,False为禁用;PhysicalAdapter: 适配器是否物理或逻辑适配器,True为物理,False为 ...
- 非root安装fastDFS及启动
引用https://www.cnblogs.com/zzw-zyba/p/10155781.html 非root安装部分 1.解包 [bdc@svr001 setup]$ tar -xvf lib ...
- Apache Spark 3.0 将内置支持 GPU 调度
如今大数据和机器学习已经有了很大的结合,在机器学习里面,因为计算迭代的时间可能会很长,开发人员一般会选择使用 GPU.FPGA 或 TPU 来加速计算.在 Apache Hadoop 3.1 版本里面 ...