帖子
帖子
用户
博客
课程
显示全部楼层
59
帖子
0
勋章
740
Y币

[BUG] rebootApp后检测不到有更新

[复制链接]
发表于 2017-4-6 10:31:03
问题描述:当从后台切回前台时,想通过man块来检查是否有更新来修复各种BUG,但发现一些机型无法达到预想的效果,就是rebootApp后没有提示更新。

设计思路如下:当初次安装应用时,切入后台检查一个时间,这时是没有时间的,所以一回到前台立即调用一次检查更新,有就提示更新。当再次将应用切到后台时,从上一次更新的时间开始计时,到再次将应用切回前台,如果上次更新距这次切回前台时间达到的24小时,再次检查更新,以后就是距上次更新每24小时检查一次。





具体实现代码:
function goBackTimeAndCheckUpdate(){
             //切入后台
            api.addEventListener({
                name:'pause'
            },function(ret,err){
                    //改在检查更新时记时间,这样可以防止永远不更新的bug,比如设计时间为24小时检查一次,那在这里记时间,我8小时登录一次,就无法检测更新
//              $api.setStorage('pauseDate',new Date().format('yyyy/MM/dd hh:mm:ss'));   

            });

            //回到前前
            api.addEventListener({
                name:'resume'
            },function(ret,err){
                var pauseDate=$api.getStorage('pauseDate');
                var d1 = new Date();


                if(pauseDate && typeof(pauseDate) != 'undefined'){
                        var d2 = new Date(Date.parse(pauseDate));
                        var pauseInterval=Math.round((d1 - d2)/60000);

                        //大于等于24小时检查更新 1440分,测试方便改成大于1分
                        if(pauseInterval>=1){
                                checkUpdate();//检查更新
                        }
                }else{
                        checkUpdate();//检查更新
                }

            });
        }




//检查更新
        function checkUpdate() {
                $api.setStorage('pauseDate',new Date().format('yyyy/MM/dd hh:mm:ss'));
               
                var mam = api.require('mam');
            mam.checkUpdate(function (ret, err) {
                   
                if (ret && (ret.status || ret.status == '1')) {
                    var result = ret.result;
                    if (result.update || result.update == 'true') {
                        if (result.closed || result.closed == 'true') {
                            api.rebootApp();//有强制更新时,重启应用,,,,重点在这里,本来有强制更新时,重启应用进行强更,但没有达到实际的效果。。。。。
                        } else {
                            api.confirm({
                                title: '更新提示',
                                msg: '版本号:' + result.version + '\n更新描述:' + result.updateTip + '\n发布时间:' + result.time,
                                buttons: ['立即更新', '取消']
                            }, function (ret, err) {
                                if (ret.buttonIndex == 1) {
                                    document.location = result.source;
       
                                } else {
                                    //取消了更新
                                }
                            });
                        }
                    } else {
                        //已经是最新版本
                    }
                } else {
                    //已经是最新版本
                };
            });

        }

380
帖子
4
勋章
6
Y币
你在页面上写个button, onclick 的时候调用检查更新的代码。
这样也检查不到的话,是不是你的代码有问题
59
帖子
0
勋章
740
Y币
技术支持-F 发表于 2017-4-6 11:22
你在页面上写个button, onclick 的时候调用检查更新的代码。
这样也检查不到的话,是不是你的代码有问题 ...

通过按钮onclick是没有问题的。就是从后台切到前台,有的机型有问题。我觉得还是rebootApp后没有检测到更新信息。我看以前有人提过相关的BUG,不知平台是否解决了?
380
帖子
4
勋章
6
Y币
clock 发表于 2017-4-6 13:40
通过按钮onclick是没有问题的。就是从后台切到前台,有的机型有问题。我觉得还是rebootApp后没有检测到更 ...

就是从后台切到前台,有的机型有问题。我觉得还是rebootApp后没有检测到更新信息。

你这样说就很模糊了,不是一个明确的bug, 怎么修复呢。

建议你换一种更新思路。重启的时候检查更新,和应用打开的时候检查更新,所达到的效果不是一样吗?一个更新的逻辑设计的这么复杂!

rebootApp 也不等于 从后台切前台啊。
59
帖子
0
勋章
740
Y币
技术支持-F 发表于 2017-4-6 15:07
就是从后台切到前台,有的机型有问题。我觉得还是rebootApp后没有检测到更新信息。

你这样说就很模糊了, ...

你的思路是可以,但如果打开应用后,一直不退出应用,就切到后台,每次返回前台再使用,这样的情景如何更新?
380
帖子
4
勋章
6
Y币
clock 发表于 2017-4-6 16:18
你的思路是可以,但如果打开应用后,一直不退出应用,就切到后台,每次返回前台再使用,这样的情景如何更 ...

这种情况很少。根据你的设计,计算时间间隔主动检查更新。我觉得没必要和前台后台的切换相关。
30
帖子
0
勋章
118
Y币
安卓一直后台运行,获取GPS或者更新版本都无法自动识别,可否用api.rebootAppp实现,用户将APP退到后台10分钟以上,再次回到前台时,就重启APP。这样不是更好?重启APP自然会获取更新版本。
您需要登录后才可以回帖 登录

本版积分规则