ionic2 rc2 添加版本更新自動升級功能

不廢話,直接上代碼javascript

首先安裝四個必備的插件:html

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用來寫更新代碼java

ionic g provider UpdateAPP

 

詳細更新代碼android

 

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[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(
          () => {
          });
      }
    );
  }
}

在app.component.ts的構造方法裏調用升級代碼服務器

//檢查應用是否須要更新
updateapp.checkUpdate();

 

 

 

 

 

若有問題,歡迎討論\(^o^)/~app

效果:ionic

 

 

轉載請註明出處:http://www.cnblogs.com/super-cj/p/6279009.htmlide

相關文章
相關標籤/搜索