ionic android升级检查

Posted 知行合一

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ionic android升级检查相关的知识,希望对你有一定的参考价值。

https://www.cnblogs.com/zxj159/p/4421578.html

坑:

放到cordova.file.DataDirectory下载异常? 只好cordova.file.externalDataDirectory

代码

        // 检查更新
        $scope.appUpdateCheck = function(init) {
            var init = init || 0;

            // appUpdateService.showUpdateConfirm({});
            // return;

            VersionService.get({ platform: ionic.Platform.platform() }, function(resp) {
                // alert(JSON.stringify(resp))
                if (resp.code == \'000\') {
                    // alert(resp.data.version)
                    // alert($cordovaAppVersion.getVersionNumber())
                    // alert($cordovaAppVersion.getVersionCode())

                    cordova.getAppVersion.getVersionNumber(function(version) {
                        // alert(version)
                        if (version == resp.data.version) {
                            if (!init) {
                                messageService.show(\'当前已是最新版本\');
                            }
                            return;
                        }

                        $scope.hasNewVersion = 1;
                        $scope.device_items[1].name = $sce.trustAshtml(\'升级检查<font style="color:#FD1F38"> - New!</font>\');

                        if (!init) {
                            appUpdateService.showUpdateConfirm(resp.data);
                        }
                    });
                } else {
                    messageService.show(resp.msg);
                }
            });
        }
 ;
 (function(angular) {

    angular.module(\'mobile\')

        .factory(\'appUpdateService\', [\'$cordovaFileTransfer\', \'$cordovaFileOpener2\', \'$ionicPopup\', \'$ionicLoading\', \'$timeout\', \'messageService\',
            function($cordovaFileTransfer, $cordovaFileOpener2, $ionicPopup, $ionicLoading, $timeout, messageService) {
                // 显示是否更新对话框
                function showUpdateConfirm(versionInfo) {
                    var versionInfo = versionInfo;
                    var downloadUrl = versionInfo.url,
                        updateLog = versionInfo.upgradeinfo,
                        targetPath = \'file:///storage/sdcard0/Download/XiaoShuTong.apk\' //APP下载存放的路径,可以使用cordova file插件进行相关配置

                    // TODO 测试数据
                    // downloadUrl = \'http://imtt.dd.qq.com/16891/006473EB7690D8B89DEBD9613BF9E40E.apk?fsname=com.tencent.mm_6.6.0_1200.apk\'
                    // updateLog = \'1. 更新模块升级<br>2. 修复1个bug<br>\'
                    targetPath = cordova.file.externalDataDirectory + \'XiaoShuTong.apk\'

                    var confirmPopup = $ionicPopup.confirm({
                        title: \'版本升级\',
                        template: updateLog, //从服务端获取更新的内容
                        cancelText: \'取消\',
                        okText: \'升级\'
                    });
                    confirmPopup.then(function(res) {
                        if (res) {
                            // if (ionic.Platform.isios()) {
                            //     // 提示进入 APP store
                            //     messageService.show(\'请到App Store升级.\');
                            // }
                            if (ionic.Platform.isandroid() && downloadUrl != \'\') {
                                $ionicLoading.show({
                                    template: "已经下载:0%"
                                });
                                $cordovaFileTransfer.download(downloadUrl, targetPath, null, true).then(function(result) {
                                    // 打开下载下来的APP
                                    $cordovaFileOpener2.open(targetPath, \'application/vnd.android.package-archive\').then(function() {
                                        // 成功
                                    }, function(err) {
                                        // 错误
                                        // alert(\'安装文件打开失败, 请尝试手动安装.\');
                                        messageService.show(\'安装文件打开失败, 请尝试手动安装.\');
                                    });
                                    $ionicLoading.hide();
                                }, function(error) {
                                    $ionicLoading.hide();
                                    // alert(JSON.stringify(error));
                                    // messageService.show(JSON.stringify(error));
                                    messageService.show(\'请设置应用文件操作权限, 然后重试.\');
                                }, function(progress) {
                                    var downloadProgress = Math.floor((progress.loaded / progress.total) * 100);
                                    if (downloadProgress > 0) {
                                        $ionicLoading.show({
                                            template: \'已经下载:\' + downloadProgress + \'%\'
                                        });
                                    }
                                    if (downloadProgress > 99) {
                                        $ionicLoading.hide();
                                    }
                                });
                            }
                        } else {
                            // 取消更新
                            $ionicLoading.hide();
                        }
                    });
                }

                // return
                return {
                    showUpdateConfirm: showUpdateConfirm
                }
            }
        ]);

 })(angular);

以上是关于ionic android升级检查的主要内容,如果未能解决你的问题,请参考以下文章

Ionic实战 自动升级APP(Android版)

Ionic实战 自动升级APP(Android版)

Ionic实战 自动升级APP(Android版)

Ionic实战 自动升级APP(Android版)

在 IONIC 项目中升级到电容器 3 后,Android Studio 构建失败

在android studio中升级repo v9后,片段必须是公共静态类崩溃错误