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

相關文章
相關標籤/搜索