上篇通过更新文件升级APP,如果遇到了比如更新插件之类的问题,上篇是无法解决的,所以为了解决这个问题,需要下载apk文件升级APP。

     1.配置文件如下:{'appVersion':'1.0.0','content':'1.更新app信息展示<br>2.修复XXX'}

   2.安装ngCordova,下载地址:https://github.com/driftyco/ng-cordova

1.将ng-cordova.js 拷贝到你的lib文件夹下,然后在index.html文件中的cordova.js文件前引入 ,如       

             <!-- cordova script (this will be a 404 during development) -->
<script src="lib/ngCordova/ng-cordova.js"></script>
<script src="cordova.js"></script>

       2.然后注入到你的模块中,比如app.js,如:       

       angular.module('starter', ['ionic','ngCordova']);

   3.然后下载传输文件所需要的插件

文件管理  cordova plugin add cordova-plugin-file  

文件传输    cordova plugin add cordova-plugin-file-transfer

应用版本  cordova-plugin-app-version

文件打开   cordova-plugin-file-opener2

      首先,通过比较APP版本号与服务器配置文件版本号是否一致,如果不一致,则升级。通过后台获取版本后与更新内容

     service.checkUpdate=function(){
appVersion.getVersion().success(function(data){
$cordovaAppVersion.getVersionNumber().then(function(version){
if(version!=data.appVersion){
service.showUpdateConfirm(data.content);
}
})
})
}

   然后,如果版本号不一致,则弹窗提示用户是否升级。   

       service.showUpdateConfirm=function(content){
var confirmPopup = $ionicPopup.confirm({ --弹窗提示是否升级
title: '版本升级',
template: content,
cancelText: '取消',
okText: '升级'
});
confirmPopup.then(function(res){
if(res){
$ionicLoading.show({
template: "已经下载:0%" --提示进度条
});
var url = "http://xxxx.com/xxxx.apk"; --服务器文件地址
var targetPath = cordova.file.externalDataDirectory+"xxx.apk"; --手机下载位置,可以根据cordova file设置
var trustHosts = true
var options = {};
$cordovaFileTransfer.download(url,targetPath,options,trustHosts).then(function(result){
$cordovaFileOpener2.open(targetPath,'application/vnd.android.package-archive').then(function(){
},function(){ })
$ionicLoading.hide();
},function(err){
alert(err);
},function(progress){
$timeout(function(){
var downloadProgress = (progress.loaded / progress.total) * 100;
$ionicLoading.show({
template: "已经下载:" + Math.floor(downloadProgress) + "%"
});
if (downloadProgress > 99) {
$ionicLoading.hide();
}
})
});
}else{ }
})
}

4.至此,apk就下载手机,自动打开安装,升级完成。升级可以与上篇的一起使用,小更新用上篇的,大更新用本篇的。

ionic 通过下载apk升级App的更多相关文章

  1. 扫描二维码下载安装apk的app

    将apk文件放到服务器上,下载链接直接生成二维码,用微信扫描时不能直接下载.页面只是刷新一下. 想实现微信扫描下载apk的app客户端,需要把下载链接做到一个网页上, 将网页生成一个二维码. 直接下载 ...

  2. 微信浏览器无法下载APK文件的解决方案

    大家是不是经常会遇到微信内点击链接或扫描二维码无法打开指定网页的问题?只要你使用微信转发分享,相信你就一定会遇到,那么打不开的原因很简单了,就是被微信拦截了.这个问题我们只需要实现从微信内直接跳出到外 ...

  3. Ionic实战 自动升级APP(Android版)

    Ionic 框架介绍 Ionic是一个基于Angularjs.可以使用HTML5构建混合移动应用的用户界面框架,它自称为是"本地与HTML5的结合".该框架提供了很多基本的移动用户 ...

  4. ionic 实现自动升级APP

    最近做移动商城开发,需要一个自动升级APP的功能,在网上搜罗很多,发现有的是下载APK,有的在我这服务无法实现,由于时间原因,都被PASS了,最后找到了一个热更新插件,经过半天的调试,可以使用,很欣喜 ...

  5. 如何从google play下载app应用,直接下载apk

    如何从google play直接下载apk   by fly2004jun 2013-10-05 转载请附出处     由于某些原因,大天朝局域网访问google很多服务不能用,其中就包括google ...

  6. 怎么让微信下载APK文件包,微信内置浏览器无法打开APP下载链接的解决方案

    ** 做微信营销活动或者APK下载推广时候,域名被经常被封,做到微信中正常使用呢?这就要借助一些工具来实现有效的操作.** 先来认识一下微信屏蔽的原理.按原理逐个攻破,本人做防封一年来自认为得心应手, ...

  7. 通过okhttp3下载文件实现APP版本更新

    原文:https://blog.csdn.net/qq_34261214/article/details/77124729 概况 思路是这样的,首先在服务器上把已经签名打包的apk放上去,还有一份TX ...

  8. 扫二维码下载apk并统计被扫描次数(及微信屏蔽下载解决方案)

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5395715.html 需求:想让用户扫描一个二维码就能下载APP,并统计被扫描次数. 两种实现方法: 1.一 ...

  9. Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App

    安装VS2015 Update2的过程是非常曲折的.还好经过不懈的努力,终于折腾成功了. 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错.对于Cordova.PhoneG ...

随机推荐

  1. Liferay7 BPM门户开发之28: Portlet文件上传,及实体类同步更新上传

    抓住核心 . Liferay文件上传的核心就是使用UploadPortletRequest类 继承关系java.lang.Object extended byjavax.servlet.Servlet ...

  2. android: 从相册中选择照片

    虽然调用摄像头拍照既方便又快捷,但并不是每一次我们都需要去当场拍一张照片的. 因为每个人的手机相册里应该都会存有许许多多张照片,直接从相册里选取一张现有的照 片会比打开相机拍一张照片更加常用.一个优秀 ...

  3. ASP.NET Web API中的参数绑定总结

    ASP.NET Web API中的action参数类型可以分为简单类型和复杂类型. HttpResponseMessage Put(int id, Product item) id是int类型,是简单 ...

  4. NAS服务器局域网内IPad、手机、电视盒子等联网播放

    为把各个移动硬盘和不同电脑的数据进行统一管理,入手了一台希捷 Seagate Business 无内置硬盘 商业级 2盘位 云存储网路存储,经过卖家指点和不断摸索,终于能用了,主要步骤如下: 1. 系 ...

  5. IOS图像拉伸解决方案

    UIButton实现背景拉伸,即图片两端不拉伸中间拉伸的办法有如下两种: 第一种方法很简单而且使用性更广.做法就是直接拉伸想要setBackgroundImage的image,代码如下: UIImag ...

  6. assertThat用法

    一般匹配符1.assertThat( testedNumber, allOf( greaterThan(8), lessThan(16) ) ); 注释: allOf匹配符表明如果接下来的所有条件必须 ...

  7. vlc android 移植版编译

    同步发表于http://avenwu.net/2015/07/27/vlc-android-compiling 安装必备工具/解决环境问题 环境准备什么的如果没配置过需要一步步配置,主要是sdk/nd ...

  8. 【转】TCP协议的无消息边界问题

    http://www.cnblogs.com/eping/archive/2009/12/12/1622579.html   使用TCP协议编写应用程序时,需要考虑一个问题:TCP协议是无消息边界的, ...

  9. 1.C#中几个简单的内置Attribute

    阅读目录 一:Obsolete 二:Conditional 一:Obsolete      这个内置属性是说这个方法废弃了不可用,它有两个参数,第一个参数message是说废弃的原因,第二个参数err ...

  10. DRY原则和Shy原则

    保障可维护性的主要诀窍是遵循DRY原则和Shy原则. 在一个系统的整个生命周期里,理解和改动这类维护工作的比例一般非常之高.为了维护的方便,要尽量将系统划分为可以独立理解与改动的模块.这就要在设计的时 ...