原文: cordova APP 检查更新 //升级程序 .factory(‘UpdateService‘, function ($rootScope, $cordovaAppVersion, $cordovaFileTransfer, $timeout, $ionicLoading, $cordovaFileOpener2, $http, $ionicPopup, xc) { //检查更新 var checkUp
//升级程序 .factory(‘UpdateService‘, function ($rootScope, $cordovaAppVersion, $cordovaFileTransfer, $timeout, $ionicLoading, $cordovaFileOpener2, $http, $ionicPopup, xc) { //检查更新 var checkUpdate = function () { $cordovaAppVersion.getVersionNumber().then(function (v) { var url = xc.server.domain + ‘update/checkNew/‘ + xc.app.id + ‘/android/‘ + v; $http.get(url) .error(function () { console.log(‘从服务器获取数据失败!‘); }) .then(function (response) { var data = response.data; var compatible_binary = data.compatible_binary; var update_available = data.update_available; if (compatible_binary && update_available) { var url = xc.server.domain + data.update.url; showUpdateConfirm(url, data.info || ‘‘); } } ); }); }; /** * * @param url * @param info */ var showUpdateConfirm = function (url, info) { var confirmPopup = $ionicPopup.confirm({ title: ‘版本升级‘, template: info.toString().replace(/\n/g, ‘<br />‘), cancelText: ‘取消‘, okText: ‘升级‘ }); confirmPopup.then(function (res) { if (res) { $rootScope.process = 0; $ionicLoading.show({ template: ‘<ion-spinner icon="bubbles" class="spinner-assertive spinner spinner-bubbles"></ion-spinner><br>已经下载:{{process}}%‘ }); var targetPath = cordova.file.externalDataDirectory + "update.apk";//APP下载存放的路径,可以使用cordova file插件进行相关配置 var trustHosts = true; var options = {}; $cordovaFileTransfer.download(url, targetPath, options, trustHosts).then(function (result) { // 打开下载下来的APP //console.log(JSON.stringify(result)); $cordovaFileOpener2.open(targetPath, ‘application/vnd.android.package-archive‘ ).then(function () { }, function (err) { }); $ionicLoading.hide(); }, function (err) { alert(‘下载失败‘); }, function (progress) { //进度,这里使用文字显示下载百分比 $timeout(function () { var downloadProgress = (progress.loaded / progress.total) * 100; $rootScope.process = Math.floor(downloadProgress); if (downloadProgress > 99) { $ionicLoading.hide(); } }) }); } else { // 取消更新 } }); }; return { checkUpdate: checkUpdate } })