全栈
全栈
  • 发布:2019-04-04 12:23
  • 更新:2019-05-21 17:39
  • 阅读:1498

【报Bug】mui+个推;离线时点击推送的消息,有一定概率触发click,一定概率不触发click

分类:HTML5+

详细问题描述

经过多次测试,iOS离线的情况下,点击推送的消息,有一定概率触发click,一定概率不触发click!
这怎么回事啊?到底是什么原因?怎么有时候能触发 click 事件,有时候则不触发任何事件?
都是完全一样的推送消息,不断测试得出的结果!看了下其他APP,是100%触发的!请问这是这个框架做的APP本身的BUG?
发了那么多帖子也没人回复!

后端写死一个推送,完全一样的推送!消息结果设置完全一样测试的结果!
// 监听点击消息事件
plus.push.addEventListener( "click" , function( msg ) {
var appinfo = plus.push.getClientInfo();
if(localStorage.getItem("userid") == 22569 && appinfo.clientid == 'c4a3f***d'){
plus.nativeUI.alert('点击了消息通知');
plus.nativeUI.alert(JSON.stringify(msg));
};
}

无语中!

2019-04-04 12:23 负责人:无 分享
已邀请:
DCloud_iOS_XHY

DCloud_iOS_XHY

你好,我们官方的5+demo测试是没问题的,麻烦提供一下复现的demo,我排查一下

  • 全栈 (作者)

    今天我又测试了一下,后端推送一样的数据,在确保没有后台运行的情况下,测试了群推和单推的推送,大概10次中出现2次不触发事件;我首页使用的是官方提供的底部凸起图标的导航做的项目;我下面附上我的监听代码

    2019-04-09 17:35

全栈

全栈 (作者) - 90后全栈男

连我的注释也附上了;下面是在我的首页相关的监听代码,注释也带上,完全复制的代码;CID隐藏了中间用***代替

document.addEventListener( "plusready", function(){

                plus.push.clear();  
                //mui.toast(plus.push.getClientInfo().clientid); 个推CID  
                if(plus.os.name != 'iOS'){  
                    existClickYS = true;  
                    localStorage.setItem("existClickYS", 1);  
                };  

                // 监听点击消息事件  
                plus.push.addEventListener( "click" , function( msg ) {  

                    // 判断是从本地创建还是离线推送的消息  
                    /*switch( msg.payload ) {  
                        case "LocalMSG":  
                            alert( "点击本地创建消息启动:" );  
                        break;  
                        default:  
                            alert( "点击离线推送消息启动:");  
                        break;  
                    }*/  
                    // 提示点击的内容  
                    //plus.ui.alert( msg.content );  
                    // 处理其它数据  
                    //logoutPushMsg( msg );  
                    var appinfo = plus.push.getClientInfo();  
                    if(localStorage.getItem("userid") == 22569 && appinfo.clientid == 'c4a3******a7f5d'){  
                        plus.nativeUI.alert('点击了消息通知');  
                        plus.nativeUI.alert(JSON.stringify(msg));  
                    };  

                        var thisJson = JSON.parse(msg.content);  
                        var thisId = thisJson.taskId;  
                        var thisType = thisJson.type;  
                        if(thisJson.classType == 'task'){  
                            localStorage.setItem("thisimg", thisJson.imgsrc);  
                            localStorage.setItem("thistitle", thisJson.title);  
                            openViewTask('taskDetail', thisId, thisType);  
                        };  

                }, false );  
                // 监听在线消息事件  
                plus.push.addEventListener( "receive", function( msg ) {  
                    var thisJson = JSON.parse(msg.content);  

                    if(plus.os.name == 'iOS'){  
                        plus.push.createMessage(thisJson.title, msg.content);  
                    }else{  
                        //plus.push.createMessage(thisJson.title+'diao', msg.content);  
                        if(thisJson.classType == 'task'){ //目前华为荣誉点击时触发这个  
                            var thisId = thisJson.taskId;  
                            var thisType = thisJson.type;  
                            localStorage.setItem("thisimg", thisJson.imgsrc);  
                            localStorage.setItem("thistitle", thisJson.title);  
                            openViewTask('taskDetail', thisId, thisType);  
                        };  
                    }  

                   // if ( msg.aps ) {  // Apple APNS message  
                    //    plus.push.createMessage(thisJson.title, msg.content);  
                  //  } else {  
                        //alert( "接收到在线透传消息:" );  
                        //plus.push.createMessage('透传消息触发:消息'+msg.content);  
                        //alert( msg.content );  

                  /*        
                        if(thisJson.classType == 'task'){  
                            var thisId = thisJson.taskId;  
                            var thisType = thisJson.type;  
                            localStorage.setItem("thisimg", thisJson.imgsrc);  
                            localStorage.setItem("thistitle", thisJson.title);  
                            openViewTask('taskDetail', thisId, thisType);  
                        };  
                    }*/  

                }, false );  

                if(plus.os.name == 'iOS' && existClickYS === false){  
                    bottomClick = false;  
                };  

            }, false );
  • DCloud_iOS_XHY

    就你说的这个场景,请上传一个能直接测试的 demo

    2019-04-09 18:19

  • 全栈 (作者)

    回复 DCloud_iOS_XHY:明天给你私信个下载链接,打包放服务器里面;是只要首页和对应的JS+CSS还是要整个APP代码?

    2019-04-09 18:34

  • DCloud_iOS_XHY

    回复 全栈:能复现你这个问题的5+app demo即可,这里也可以上传附件的

    2019-04-09 18:39

  • 全栈 (作者)

    回复 DCloud_iOS_XHY:这里上传附件那不是谁都可以下载了?另外我想问一下,ios app内为什么不支持 IntersectionObserver ?我用手机自带的浏览器发现是支持 IntersectionObserver 的,不是调用的自带浏览器的内核吗?

    2019-04-10 10:15

  • 全栈 (作者)

    回复 DCloud_iOS_XHY:知道uiwebview和wkwebview了!

    2019-04-10 10:21

  • DCloud_iOS_XHY

    回复 全栈:你可以新建个 5+ app 把推送相关代码写一下,别人下载也没什么用,只要能复现问题就好,因为我们5+默认的demo是好的

    2019-04-10 11:25

  • 全栈 (作者)

    回复 DCloud_iOS_XHY:我已经私信发下载链接给你了~是苹果端哦! ios不好搞啊,我目前是已经上架的代码;不可能弄个测试的东西去上架,如果是搞测试的,我们就要把证书这些更换和个推证书更换,这样就会影响线上版本了!而我们的推送很重要,不能够被影响!

    2019-04-10 11:32

  • 全栈 (作者)

    回复 DCloud_iOS_XHY:安卓的没问题,其实主要APP在运行都没问题,就在IOS离线下出现一定的概率不触发事件;

    2019-04-10 11:34

  • DCloud_iOS_XHY

    回复 全栈:...你理解错了,我需要的是模拟你推送环境的js代码,不需要你们测推送环境,我们用自己的证书测试

    2019-04-10 11:48

美宝宝

美宝宝

楼主解决了没有,我也遇到这个问题了!!!求答案

  • 全栈 (作者)

    没有解决!官方说是我的 appinfo.clientid 有问题,说 appinfo.clientid 可能会变化的,导致偶尔不能触发!

    从代码逻辑来说是没问题的,而且我也没发现 appinfo.clientid 有改变,所以说官方的说法我并没有信服!也有可能是我的测试机有问题,因为触发概率低,我也不再去理会了。

    2019-05-10 10:07

  • 陵域

    楼主解决了没有,我也遇到这个问题了!!!求答案

    2022-10-24 10:37

老哥教教我

老哥教教我 - 踏实工作

楼主解决了吗?我的安卓也是有时候点击不触发回调函数?
mui.plusReady(function() {
//msg符合json格式则触发通知中心提示然后点击可以查看
plus.push.addEventListener("click", function(msg) {
mui.alert(JSON.stringify(msg));
}, false);
})

华为畅玩5x

  • 老哥教教我

    好像推送信息一样,click就会有时候不触发,

    2019-05-21 12:49

  • 陵域

    楼主解决了没有,我也遇到这个问题了!!!求答案

    2022-10-24 10:37

  • 老哥教教我

    回复 陵域: 都忘记了,换个手机试试

    2022-10-27 15:28

老哥教教我

老哥教教我 - 踏实工作

好像推送信息一样,click就会有时候不触发,

  • 全栈 (作者)

    我们发现,当收到消息时,比较快的速度点击推送消息,就不会触发click;如果凉着一会儿才点击推送消息就能触发。还有就是,当触发click时的效果,会慢点进入APP,当不触发click的场景时,进入APP就的速度就快很多!

    2019-05-21 14:07

  • 老哥教教我

    回复 全栈: 哈哈

    2019-05-21 19:28

全栈

全栈 (作者) - 90后全栈男

我们发现,当收到消息时,比较快的速度点击推送消息,就不会触发click;如果凉着一会儿才点击推送消息就能触发。还有就是,当触发click时的效果,会慢点进入APP,当不触发click的场景时,进入APP就的速度就快很多!

辛德瑞拉

辛德瑞拉 - js 也会 php 也会 但是都是皮毛,,,

我们在18年中旬就遇到这个bug了,和你描述的是一样的,官方老让提供复现demo,可是这个问题根本就不是百分百复现的,我如果后台一直推送,click点击就一直能触发,就没有问题,但是按照运营的做法,每天正式推送 2,3条 时不时就能遇上click不触发,现在我们也有这个问题,很无奈。

  • 全栈 (作者)

    确实,我们也很无奈!到现在都没有解决办法,官方说他们测试正常!

    2019-05-21 17:19

  • 全栈 (作者)

    你使用的测试机是什么的?

    2019-05-21 17:39

全栈

全栈 (作者) - 90后全栈男

你使用的测试机是什么的?

  • 辛德瑞拉

    与机型没关系吧,现在我们的是苹果6splus,XR, 苹果6,XS max。都遇到过,

    2019-05-22 09:53

  • 全栈 (作者)

    回复 辛德瑞拉: 这样,我是想了解一下,这么说来是所有机型都存在这个问题!

    2019-05-22 10:08

  • 陵域

    回复 全栈: 楼主解决了没有,我也遇到这个问题了!!!求答案

    2022-10-24 10:37

该问题目前已经被锁定, 无法添加新回复