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,每次修改后均需要发邮件通知各用户替换最新版本,很不方便,因此后来就写了一个自动升级的功能,这样每次发布新的版本时只需要将其部署到自动升级服 ...
随机推荐
- 【设计模式】抽象工厂模式(Abstract Factory Pattern)
[前言] 上次针对自己的理解书写一篇工厂模式的文章,后面对于工厂模式进行更加多的学习,于是了解到了抽象工厂模式.其实网上大多数人们都是抽象工厂模式是工厂模式的升级版本,虽然我并不知道所说的升级是什么意 ...
- 括号生成(Java实现)
题目: 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n =3,生成结果为: [ "((()))", "(()( ...
- delphi提示“Undeclared identifier”TForm的缺少引用单元列表
在interface uses 添加TForms;
- cookie,session,fileter,liscen
会话技术: 会话:一次会话中发生多次请求和响应 一次会话:从浏览器的打开到关闭 功能:在会话的过程中 ,可以共享数据 cookie:客户端的会话技术session:服务端的会话技术 Cookie:小饼 ...
- ajax、axios、fetch之间的详细区别以及优缺点
1.jQuery ajax $.ajax({ type: 'POST', url: url, data: data, dataType: dataType, success: function () ...
- 从零开始搭建Webpack+react框架
1.下载node.js Node.js官网下载 , 安装: 安装成功后在控制台输入node -v 可查看当前版本: $ node -v v10.15.0 输入npm -v查看npm版本: $ npm ...
- 李航《统计学习方法》CH02
CH02 感知机 前言 章节目录 感知机模型 感知机学习策略 数据集的线性可分性 感知机学习策略 感知机学习算法 感知机学习算法 感知机学习算法的原始形式 算法的收敛性 感知机学习算法的对偶形式 导读 ...
- linux 查找指定进程并kill
ps -ef | grep php | grep -v 'grep' | awk '{print $2}'| xargs kill -9
- c# Expression 扩展
一.简介 当查询比较复杂时,需要很多判断或者跨方法传递参数时使用 二.扩展类 public static class DynamicLinqExpressions { public static ...
- Java之for循环嵌套练习
1.打印4层*** ***** ***** ***** ***** class forfor{ public static void main(String[] args){ for(int y=0; ...