cordova APP 检查更新

//升级程序
    .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
        }
    })

  

posted @ 2016-08-30 16:00  梁照彬  阅读(4674)  评论(0编辑  收藏  举报