ionic app版本更新

1.page.html

<ion-card>
      <div id="progressnum"></div>
</ion-card>

2.page.ts

import { Component, OnInit } from '@angular/core';

import { NavController } from '@ionic/angular';
import { FileOpener } from '@ionic-native/file-opener/ngx';
import { FileTransfer, FileTransferObject } from '@ionic-native/file-transfer/ngx';
import { AppVersion } from '@ionic-native/app-version/ngx';
import { File } from '@ionic-native/file/ngx';
import { AlertController } from '@ionic/angular';

@Component({
  selector: 'app-check-updates',
  templateUrl: './check-updates.page.html',
  styleUrls: ['./check-updates.page.scss'],
})
export class CheckUpdatesPage implements OnInit {

  constructor(public navController: NavController, private file: File, private transfer: FileTransfer, private appVersion: AppVersion, private fileOpener: FileOpener, public alertController: AlertController) {
  }

  //设备加载完成再去调用硬件

  ngOnInit() {
  }
  ngAfterContentInit(): void {
    //Called after ngOnInit when the component's or directive's content has been initialized.
    //Add 'implements AfterContentInit' to the class.
    // this.isUpdate();

    this.downloadApp();
  }

  isUpdate() {
    // 1、获取当前应用的版本号

    this.appVersion.getVersionNumber().then((value: any) => {
      // console.log(value)

      //2、请求服务器接口获取服务器的版本号

      this.showAlert();

    }).catch(err => {
      // console.log('getVersionNumber:' + err);
    });

  }

  async showAlert() {

    //3.弹窗提示用户是否更新    
    const alert = await this.alertController.create({
      header: '升级!',
      message: '发现新版本,是否立即升级?',
      buttons: [
        {
          text: '取消',
          role: 'cancel',
          cssClass: 'secondary',
          handler: (blah) => {
          }
        }, {
          text: '确认',
          handler: () => {
            //4.下载apk
            this.downloadApp();
          }
        }
      ]
    });
    await alert.present();

  }

  downloadApp() {
    const targetUrl = 'http://39.105.153.63:84/diloc.apk';
    const fileTransfer: FileTransferObject = this.transfer.create();
    // console.log(this.file.dataDirectory);
    fileTransfer.download(targetUrl, this.file.dataDirectory + 'diloc.apk').then((entry) => {
      //6、下载完成调用打开应用

      this.fileOpener.open(entry.toURL(),
        'application/vnd.android.package-archive')
        .then(() => {
          // console.log('File is opened')
        })
        .catch(e => {
          // console.log('Error openening file', e)
        });


    }, (error) => {
      alert(JSON.stringify(error));
    });


    //5、获取下载进度    
    var oProgressNum = document.getElementById('progressnum');
    fileTransfer.onProgress((event) => {
      let num = Math.ceil(event.loaded / event.total * 100);  //转化成1-100的进度
      if (num === 100) {
        oProgressNum.innerHTML = '下载完成';
      } else {
        oProgressNum.innerHTML = '下载进度:' + num + '%';

      }
    });




  }
  goBack() {
    this.navController.back();
  }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值