首页 > 其他 > 详细

ionic2 rc2 添加版本更新自动升级功能

时间:2017-01-12 17:22:55      阅读:756      评论:0      收藏:0      [点我收藏+]

标签:class   lar   技术分享   eat   math   log   file   nload   htm   

不废话,直接上代码

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

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 [email protected]/core‘;
import { Http } from [email protected]/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版本号与当前版本号进行对比 this.g.Post(execName, param, ‘‘, true, true).then((data: Array<any>) => { console.log(data); AppVersion.getVersionNumber().then((version) => { console.log(version); if (data[0].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) * 100; uploading.setContent("已经下载:" + Math.floor(downloadProgress) + "%"); if (downloadProgress > 99) { 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( () => { }); } ); } }

  

效果:

 技术分享

 

转载请注明出处:http://www.cnblogs.com/super-cj/p/6279009.html

 

ionic2 rc2 添加版本更新自动升级功能

标签:class   lar   技术分享   eat   math   log   file   nload   htm   

原文:http://www.cnblogs.com/super-cj/p/6279009.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号