文档章节

ionic app 在android平台自动下载升级安装

k
 kongzong
发布于 2016/04/16 13:06
字数 520
阅读 337
收藏 2


零)内容从网络获取试验后整理而成,基本上能符合大部分需求了

  1. 修复部分错误,补全部分内容,比如升级说明均来自服务器端配置,以及下载进度条的正确显示

  2. 增加服务器端代码及说明

  3. 增加app升级步骤。


一)先安装必要的插件:

ionic plugin add cordova-plugin-app-version

ionic plugin add cordova-plugin-file

ionic plugin add cordova-plugin-file-transfer

ionic plugin add cordova-plugin-file-opener2


二)app.js的run方法里添加代码

$ionicPlatform .ready(function () {
//其他代码
//自动下载升级安装
  if (ionic.Platform.isAndroid()) {
    $http.jsonp('http://www.yourdomain.com/ver.php?callback=JSON_CALLBACK')
      .then(function (data) {
      var serverAppVersion = data.data.ver;//服务器 版本
      
      $cordovaAppVersion.getVersionNumber()
        .then(function (version) {          
          if (version != serverAppVersion) {
            var confirmPopup = $ionicPopup.confirm({
              title: '有新的版本:' + serverAppVersion,
              template: data.data.desc, //从服务端获取更新的内容
              cancelText: '取消',
              okText: '升级'
            });
            confirmPopup.then(function (res) {
              if (res) {
                if (version != serverAppVersion) {
                  $ionicLoading.show({
                    template: "开始下载,请等待..."
                  });
                  var url = "http://www.yourdomain.com/app.apk";
                  var targetPath = "file:///mnt/sdcard/Download/app.apk";
                  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 (err) {
                      });
                    $ionicLoading.hide();
                  }, function (err) {
                    alert('下载失败');
                  }, function (progress) {
                      //进度,这里使用文字显示下载百分比
                      var downloadProgress ;                      
                      downloadProgress = (progress.loaded / progress.total) * 100;
                      $ionicLoading.show({
                          template: '已经下载:' + Math.floor(downloadProgress) + '%'
                      });
                      if (downloadProgress > 99) {
                        $ionicLoading.hide();
                      }                      
                  });
                }
              }
            });
          }
        });
    });
  }//if (ionic.Platform.isAndroid()) {
});


*特别要注意,增加依赖关系,因为在浏览器里无法调试这部分代码,只能通过chrome://inspection来调试


三)后端的ver.php代码

<?php
header("Content-type:text/html;charset=utf-8");
$callback = $_GET['callback'];
$response = array('ver'=>"0.0.3", 'desc'=>'1.xxx<br>2.yyyy<br>3.zzz');
$json = json_encode($response);
echo "$callback($json)";


说明:callback是为了支持jsonp调用,这样使得能ver.php等被跨域调用



四)app升级步骤:

1.修改程序,编译apk,编译前记得修改/config.xml 里的version,提高一个版本号

2.上传apk到服务器指定的路径

3.修改服务器端ver.php代码:$response = array('ver'=>"0.0.3", 'desc'=>'1.xxx<br>2.yyyy<br>3.zzz');

建议注释原有语句,增加新语句,这样相当于就保留了完整的升级历史,在新语句里修改ver和config.xml里的version一致,同时修改desc里的升级内容。


<<END>>


© 著作权归作者所有

k
粉丝 1
博文 9
码字总数 8383
作品 0
朝阳
程序员
私信 提问
分享 Ionic 开发 Hybrid App 中遇到的问题以及后期发布 iOS/Android 的方方面面

此篇文章主要整理了最近在使用 Ionic 开发 Hybrid App 过程中遇到的一些疑难点以及后期发布生成 iOS 和 Android 版本过程中的种种问题。 文章目录 Ionic 简介和项目需求介绍 View 缓存的处理...

达摩院法师
2015/11/05
0
0
linux 平台安装ionic开发调试编译环境(Android)

linux版本:centos 6.5 提前准备好http proxy: 1.http_proxy=http://x.x.x.x:58989 2.备选的http proxy: sdk.gdgshanghai.com 8000 先安装node.js,需要pyhton 2.6以上 # cat /etc/system-rele......

kongzong
2015/08/20
2.5K
0
Ionic+Angular 开发移动应用一:环境搭建

欢迎交换友链: Laker's Blog--进击的程序媛 Github:https://github.com/younglaker V信: lakerHQ (请注明‘来自博客’) 介绍 ionic 是一个强大的 HTML5 应用程序开发框架(HTML5 Hybrid M...

江小湖Laker
2018/08/27
0
0
Ionic 4 beta + Capacitor beta 尝鲜

本文为原创文章,转载请标明出处 开发环境: Ionic 4 beta 3、Capacitor beta 6。 首先 ,问是否集成 Cordova,选择 ,至此创建了一个空的 Ionic 4 项目,然后 到该工程目录下。 生成 目录。 ...

Metaphors
2018/08/18
49
0
Ionic系列——环境配置和项目搭建

1、环境介绍 Java jdk: 开发环境 Android ADT: Ionic Android开发环境 IOS Xcode: Ionic Ios开发环境 ANT: Cordova编译工具 Node: 开发环境 Git: 源码拉取下载 Bower: 包管理工具 Grunt: nod...

龙马行空
2015/07/31
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2K
14
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
38
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部