|
@@ -5,6 +5,9 @@ import { FileTransfer, FileTransferObject } from '@ionic-native/file-transfer/ng
|
|
|
import { AppVersion } from '@ionic-native/app-version/ngx';
|
|
|
import { File } from '@ionic-native/file/ngx';
|
|
|
import { AlertController } from '@ionic/angular';
|
|
|
+import { HTTP } from '@ionic-native/http/ngx';
|
|
|
+import { from } from 'rxjs';
|
|
|
+import { finalize } from 'rxjs/operators';
|
|
|
|
|
|
@Injectable({
|
|
|
providedIn: 'root'
|
|
@@ -14,10 +17,11 @@ export class Update {
|
|
|
|
|
|
|
|
|
constructor(private file: File,
|
|
|
- private transfer: FileTransfer,
|
|
|
- private appVersion: AppVersion,
|
|
|
- private fileOpener: FileOpener,
|
|
|
- public alertController: AlertController) {
|
|
|
+ private transfer: FileTransfer,
|
|
|
+ private nativeHttp: HTTP,
|
|
|
+ private appVersion: AppVersion,
|
|
|
+ private fileOpener: FileOpener,
|
|
|
+ public alertController: AlertController) {
|
|
|
}
|
|
|
|
|
|
//设备加载完成再去调用硬件
|
|
@@ -28,30 +32,56 @@ export class Update {
|
|
|
// this.isUpdate();
|
|
|
// }
|
|
|
|
|
|
- isUpdate() {
|
|
|
+ async isUpdate() {
|
|
|
// 1、获取当前应用的版本号
|
|
|
+ // console.log(this.appVersion.getAppName())
|
|
|
+ let version_number = await this.getVersionNumber()
|
|
|
+ let server_version_number = await this.getServerVersionNumber()
|
|
|
+ if (version_number !== server_version_number) {
|
|
|
+ await this.appVersion.getVersionNumber().then((value: any) => {
|
|
|
+ // console.log('ss'+server_version_number)
|
|
|
+ //2、请求服务器接口获取服务器的版本号
|
|
|
|
|
|
- this.appVersion.getVersionNumber().then((value: any) => {
|
|
|
- console.log(value)
|
|
|
+ this.showAlert(server_version_number);
|
|
|
|
|
|
- //2、请求服务器接口获取服务器的版本号
|
|
|
+ }).catch(err => {
|
|
|
+ console.log('getVersionNumber:' + err);
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
- this.showAlert();
|
|
|
-
|
|
|
- }).catch(err => {
|
|
|
- console.log('getVersionNumber:' + err);
|
|
|
- });
|
|
|
+ }
|
|
|
|
|
|
+ getVersionNumber() {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ this.appVersion.getVersionNumber().then((value: any) => {
|
|
|
+ resolve(value)
|
|
|
+ }).catch(err => {
|
|
|
+ console.log('getVersionNumber:' + err);
|
|
|
+ return
|
|
|
+ });
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
- async showAlert() {
|
|
|
- const fileTransfer: FileTransferObject = this.transfer.create();
|
|
|
- console.log(this.file.dataDirectory);
|
|
|
+ getServerVersionNumber() {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ from(this.nativeHttp.get(`http://192.168.20.15:803/SoftUpdate/SgApp/version.txt`,
|
|
|
+ {},
|
|
|
+ {})).pipe(
|
|
|
+ finalize(() => { })
|
|
|
+ ).subscribe(data => {
|
|
|
+ resolve(JSON.parse(data.data).version)
|
|
|
+ }, async err => {
|
|
|
+ console.log(err)
|
|
|
+ });
|
|
|
+ return
|
|
|
+ })
|
|
|
+ }
|
|
|
|
|
|
+ async showAlert(version) {
|
|
|
//3.弹窗提示用户是否更新
|
|
|
const alert = await this.alertController.create({
|
|
|
header: '升级!',
|
|
|
- message: '发现新版本,是否立即升级?',
|
|
|
+ message: `发现新版本(${version}),是否立即升级?`,
|
|
|
buttons: [
|
|
|
{
|
|
|
text: '取消',
|
|
@@ -77,10 +107,9 @@ export class Update {
|
|
|
//4.下载apk
|
|
|
const targetUrl = 'http://192.168.20.15:803/SoftUpdate/SgApp/app-debug.apk';
|
|
|
const fileTransfer: FileTransferObject = this.transfer.create();
|
|
|
+ //获取当前应用的安装(home)目录 1、应用包名称要一致 2、升级的包的版本号要大于当前应用的版本号 3、签名要一致 4、sdk 要安装
|
|
|
|
|
|
- console.log(this.file.dataDirectory); //获取当前应用的安装(home)目录 1、应用包名称要一致 2、升级的包的版本号要大于当前应用的版本号 3、签名要一致 4、sdk 要安装
|
|
|
-
|
|
|
- fileTransfer.download(targetUrl, this.file.dataDirectory + 'app-debug.apk').then((entry) => {
|
|
|
+ fileTransfer.download(targetUrl, this.file.externalDataDirectory + 'app-debug.apk').then((entry) => {
|
|
|
//6、下载完成调用打开应用
|
|
|
|
|
|
this.fileOpener.open(entry.toURL(),
|