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