不废话,直接上代码

首先安装四个必备的插件:

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 添加版本更新自动升级功能的更多相关文章

  1. NSIS:应用软件自动升级功能的探索与实践

    原文 NSIS:应用软件自动升级功能的探索与实践 记得以前轻狂曾分享过使用第三方软件实现应用软件自动升级功能 (详细http://www.flighty.cn/html/soft/20110106_1 ...

  2. Laravel添加代码自动提示功能

    在使用Laravel框架的时候,可能会碰上代码无法自动提示的情况,那么如何添加自动提示功能呢? 1,首先在composer.json中加入以下内容: "require": { &q ...

  3. Android 一s个相对完整的自动升级功能实现代码

    由于项目的需要最近做了一个关于Android自动升级的功能,下面将贴出Android手机客户端的完整代码.这段代码参考别的代码居多,由于不满足需求,所以自己仅仅改了一些需要变动的内容,其他功能都是按照 ...

  4. Android 一个相对完整的自动升级功能实现代码

    由于项目的需要最近做了一个关于Android自动升级的功能,下面将贴出Android手机客户端的完整代码.这段代码参考别的代码居多,由于不满足需求,所以自己仅仅改了一些需要变动的内容,其他功能都是按照 ...

  5. Delphi程序的自动升级功能的实现(AutoUpdate使用指南)

    在UtiMnid组件下,利用auAutoUpgrader实现自动升级(已经测试通过) 第一步:下载AutoUpgrader.Pro.v4.6.4. 第二步:打开AutoUpgrader.Pro.v4. ...

  6. 在Zend Studio中为ThinkPHP添加代码自动提示功能

    身边很多朋友都使用ThinkPHP或CodeIgniter等开发框架为自己的项目提高开发效率. 在得力于这些优秀框架良好的设计结构的同时,也头疼于代码的自动完成提示功能没有纯PHP网站那么完善了.经常 ...

  7. android5.1 Recovery添加从U盘升级功能【转】

    本文转载自:http://blog.csdn.net/tfslovexizi/article/details/73835594 之前看到过一个人写了4.4上添加U盘升级功能的博客http://blog ...

  8. 使用SimpleUpdater实现现有程序升级功能

    项目:https://github.com/iccfish/FSLib.App.SimpleUpdater C/S程式一般需要部署在多台机器上,如果程式有变动,需要一台一台重新安装,相当麻烦,如果我们 ...

  9. java CS结构软件自动升级的实现

    前段时间做了一个工具发布给公司的各部门使用后反馈了不少BUG,每次修改后均需要发邮件通知各用户替换最新版本,很不方便,因此后来就写了一个自动升级的功能,这样每次发布新的版本时只需要将其部署到自动升级服 ...

随机推荐

  1. 解决JS中取URL地址中的参数中文乱码

    GET请求会将中文编码,如果取出乱码的话,应该进行解码操作, 下面的函数是获取指定参数名的参数值,参数值可是中文.英文. function getQueryString(name) { var reg ...

  2. 使用 Laragon 在 Windows 中快速搭建 Laravel 本地开发环境 (转)

    laravel学院 简介 对于那些使用 Windows 操作系统的同学来说,Homestead 和 LaraDock 虽说支持 Windows 系统,但是对初学者来说,安装配置起来还是有一定复杂度的, ...

  3. Docker和jenkins实现springboot自动部署

    准备: 一个springboot项目.一台虚拟机(centos 7). 安装: linux安装docker 更新yum:yum update 下载docker: yum –y install dock ...

  4. 【分享】用Canvas实现画板功能

    前言 PC端测试:QQ浏览器全屏绘画完成.缩小时内容会被清空,切换背景颜色内容会被重置,其他暂无发现: 手机端测试:微信内置浏览器不通过:Safari 浏览器使用画笔时没固定页面会有抖动效果,使用橡皮 ...

  5. div+css的常规使用

    代码如下 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3 ...

  6. kafka 心跳和 reblance

    kafka 的心跳是 kafka consumer 和 broker 之间的健康检查,只有当 broker coordinator 正常时,consumer 才会发送心跳. consumer 和 re ...

  7. VS2015在win10上编译的程序在Win7上运行的方法

    在win10系统上使用vs2015编译了一个32位的应用程序.在win7上报错无法启动. 下面的win7系统上是可以运行的 无法运行的win7系统: 报错: 1.应用程序无法正常启动(0xc00000 ...

  8. 2-Reverse Integer(简单)

    Description: Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Outp ...

  9. dreamware2018破解

    dreamware2018破解     C:\Program Files\Adobe\Adobe Dreamweaver CC 2018      

  10. prerender-spa-plugin Vue预渲染配合meta-info优化seo

    记录一下解决方案的过程 先安装prerender和puppeteer插件  这个国外大神写的  github地址就不附上了(百度有) cnpm install prerender-spa-plugin ...