Ionic3 Android 检测并下载安装app

在应用不被发布到应用超市的情况下,而又想实现提醒用户升级APP,除了客户端要获取版本外,还需要服务器有API可以获取到当前维护进来的最新的APP版本号,以及最新的下载地址,废话不多讲了,上代码

首先准备工作,安装需要的插件

  1. 1、安装File,用于文件目录读取
    $ ionic cordova plugin add cordova-plugin-file$ npm install --save @ionic-native/file
    2、安装Version,,用于获取当前app版本
    $ ionic cordova plugin add cordova-plugin-app-version$ npm install --save @ionic-native/app-version
    3、安装transfer插件,用于下载服务器apk
    $ ionic cordova plugin add cordova-plugin-file-transfer$ npm install --save @ionic-native/file-transfer
    4、安装opener2,用于打开指定目录的apk进行安装
    $ ionic cordova plugin add cordova-plugin-file-opener2$ npm install --save @ionic-native/file-opener

准备工作就绪后,开始写实现代码如下:
1、在app.module.ts中引入几个插件
添加到providers中

2、在NativeService.ts中实现提示更新、下载apk、打开apk文件进行安装,同样引入几个插件


3、 检查app提示是否升级
       
detectionUpgrade(apkUrl, allowChoose) {
	if (allowChoose) {
		this.alertCtrl.create({
			title: '升级提示',
			subTitle: '发现新版本,是否立即升级?',
			buttons: [{
				text: '取消'
			}, {
				text: '确定',
				handler: () => {
					this.downloadApp(apkUrl);
				}
			}]
		}).present();
	} else {
		this.downloadApp(apkUrl);
	}
}
4、下载安装app
downloadApp(apkUrl) {
    let alert = this.alertCtrl.create({
        title: '下载进度:0%',
        enableBackdropDismiss: false,
        buttons: ['后台下载']
    }); 
    alert.present();
    
    const fileTransfer: FileTransferObject = this.transfer.create();
    const apk = this.file.externalRootDirectory + 'app.apk'; //apk保存的目录
    fileTransfer.download(apkUrl, apk).then(() => {
        this.fileOpener.open(apk, 'application/vnd.android.package-archive').then(() =>{
            console.log('File is opened')
        }).catch(e => {
            console.log('Error openening file', e)
        });
    });
    fileTransfer.onProgress((event: ProgressEvent) => {
        let num = Math.floor(event.loaded / event.total * 100);
        if (num === 100) {
            alert.dismiss();
        } else {
            let title = document.getElementsByClassName('alert-title')[0];
            title && (title.innerHTML = '下载进度:' + num + '%');
        }
    });
}
5、检测是否有新版本,需要服务器提供API检测最新版本
import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { Storage } from '@ionic/storage';
import { NativeService } from './../providers/NativeService';
import { AppUpdateService } from '../providers/AppUpdateService';
import { AppVersion } from '@ionic-native/app-version';

@Component({
    templateUrl: 'app.html'
})
export class MyApp {
    rootPage: any = 'page-tabs';
    constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen, private s: Storage,
                private ns: NativeService, private aus: AppUpdateService, private appVersion: AppVersion) {
        platform.ready().then(() => {
            statusBar.styleDefault();
            splashScreen.hide();
            this.appVersion.getVersionNumber().then((version: string) => {
                this.aus.compariVersion(version).subscribe(data => {
                    if (data.httpCode == 200) {
                        if (data.data.latestVersion != null && data.data.latestVersion !== version) {
                            this.ns.detectionUpgrade(data.data.androidDownload, true); //提示升级
                        }
                    }
                });
            }).catch(err => {
                console.log('getVersionNumber:' + err);
            });
        });
    }
}




  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
1 简介 1、Native APP(原生) 2、Hybrid APP(混合) 3、React Native Hybrid App按网页语言与程序语言的混合,通常分为三种类型:多View混合型,单View混合型,Web主体型。 2 技术 2.1 技术选型 Ionic 2.1.1 Ionic介绍 Ionic是一款基于Angular、Cordova的强大的HTML5移动应用开发框架,可以快速创建一个跨平台的移动医用。可以快速开发移动APP、移动WEB页面、微信公众平台应用,混合APP WEB页面。 2.1.2 Ionic和cordova、Angular关系 Ionic = cordova + Angular + ionic Css Ionic 是完全基于谷歌的 Angular 框架,在 Angular 基础上面做了一些封装,让我们可以更快速和容易的开发移动的项目。Ionic 调用原生的功能是基于 Cordova,Cordova 提供了使用JavaScript 调用 Native 功能,ionic 自己也封装了一套漂亮的 CSS UI 库。 2.1.3 开发工具 Visual Studio Code 2.1.4 管理工具 Git 2.2 环境搭建 2.2.1 概述 2.2.2 JDK 2.2.2.1 版本 jdk1.8 2.2.2.2 配置 JAVA_HOME PATH CLASSPATH 2.2.3 Apache ant 2.2.3.1 版本 1.9.12 2.2.3.2 解压 2.2.3.3 配置 ANT_HOME: D:\android\apache-ant-1.10.4 Path: %ANT_HOME%\bin 2.2.3.4 查看安装版本 ant –v 2.2.4 android SDK 2.2.4.1 版本 r24.4.1 2.2.4.2 配置 ANDROID_SDK_HOME: D:\Android\android-sdk-windows Path:%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools 2.2.4.3 SDK 通过SDK Manager下载相关的版本 2.2.4.4 查看信息 android -h 2.2.5 node.js 2.2.5.1 版本 8.11.3 2.2.5.2 安装 2.2.5.3 查看版本 node –v npm -v 2.2.6 npm/cnpm 2.2.6.1 安装npm nodejs已经集成了npm 2.2.6.2 安装 cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org 2.2.7 cordova 2.2.7.1 版本 8.0.0 2.2.7.2 安装 npm install -g cordova 可以使用cnpm代替npm cnpm install -g cordova ionic 2.2.7.3 查看版本 cordova -v 2.2.8 ionic 2.2.8.1 版本 3.20.0 2.2.8.2 安装 npm install –g ionic 可以使用cnpm代替npm cnpm install -g cordova ionic 2.2.8.3 查看版本 ionic –v 2.2.8.4 查看信息 ionic info 3 项目 3.1 创建 3.1.1 新建 3.1.2 启动 3.1.3 打包 3.1.3.1 添加 3.1.3.2 生产release版apk(签名后安装) 3.1.3.3 生成debug版apk 3.1.4 签名 3.1.4.1 生成签名文件 keytool -genkey -v -keystore testapp.keystore -alias testapp.keystore -keyalg RSA -validity 20000 3.1.4.2 apk签名 jarsigner -verbose -keystore testapp.keystore -signedjar app-release-signed.apk app-release-unsigned.apk testapp.keystore 3.1.5 安装 安卓手机安装使用

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值