博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ionic app 在android平台自动下载升级安装
阅读量:6405 次
发布时间:2019-06-23

本文共 2958 字,大约阅读时间需要 9 分钟。

hot3.png

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

  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代码

"0.0.3", 'desc'=>'1.xxx
2.yyyy
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>>

转载于:https://my.oschina.net/u/783079/blog/661047

你可能感兴趣的文章
八大监听器
查看>>
self.navigationController退出到指定页面,或者一次性pop出n个页面
查看>>
Quartz实现数据库动态配置定时任务
查看>>
iptables 端口转发以及双向通信
查看>>
备战一线互联网公司Java工程师面试题 (1)
查看>>
ThinkPHP中自动验证失败
查看>>
jquery图片切换插件jquery.cycle.js参数详解
查看>>
JavaScript push() 方法
查看>>
Map集合
查看>>
JSP基础语法1
查看>>
elasticsearch Java API 之GET API & DELETE API
查看>>
《深入理解Java虚拟机》——GC基础概念
查看>>
微信小程序联盟:官方文档+精品教程+demo集合(5月31日更新,持续更新中……)...
查看>>
Fastjson 的 Set类型和 WriteClassName 选项引起的BUG
查看>>
翻译: 星球生成 II
查看>>
IOS 多线程
查看>>
python序列化数据本地存放
查看>>
#CCNA#IP地址、子网划分参考资料网址
查看>>
比较不错的图片上传插件
查看>>
判偶不判奇
查看>>