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


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

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

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

  3. 增长app升级步骤。chrome


一)先安装必要的插件:json

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

相关文章
相关标签/搜索