7***@qq.com
7***@qq.com
  • 发布:2019-06-24 16:58
  • 更新:2019-07-18 15:11
  • 阅读:1606

关于个推!ios 监听推送透传消息createMessage后会循环执行receive

分类:uni-app

ios 监听推送透传消息 plus.push.createMessage()创建本地消息 会循环执行receive 有木有大佬遇到过!

//监听receive事件  
            plus.push.addEventListener("receive", function(msg) {  
                if(typeof(msg) != "object"){  
                    var msg = JSON.parse(msg);  
                }  

                if(msg.options.loacl){//不知道这样判断对不对    
                    var options={  
                        title:msg.title,  
                        loacl:1  
                    };  
                    if (plus.os.name != 'iOS') {  
                        plus.push.createMessage(msg.content, msg.payload,options);  
                    }else{  
                        plus.push.createMessage(msg.content, msg.payload,options);  
                    }  
                }  

            }, false);
2019-06-24 16:58 负责人:无 分享
已邀请:
深海智行

深海智行 - 专注前端培训

自己看下文档,自己创建的是有特征可以判断的,判断一下,不要一直创建

  • 7***@qq.com (作者)

    已经解决了,但是现在又遇到了新的问题 监听ios透传消息 ios会默认执行一次click 用户再点击通知会再次执行click click 加起来会执行两次 安卓正常 ios太恶心了 一步一个坑

    2019-06-25 11:02

7***@qq.com

7***@qq.com (作者)

问题已解决 给遇到此问题的朋友们一个参考

//监听推送的点击事件  
            //监听click事件,用户从消息中心点击触发的  
            plus.push.addEventListener("click", function(msg) {  
                //根据payload传递过来的数据,打开一个详情  
                console.log(msg);  
                console.log(that.$store.state.userInfo);  
                var payload = msg.payload;  
                if (that.$store.state.userInfo != null) {  
                    uni.navigateTo({  
                        url: '/pages/my/mymessage/mymessage'  
                    })  
                    console.log(msg)  
                } else {  
                    console.log('click未登录')  
                }  
            }, false);  
            //监听receive事件//监听推送的接受事件  
            plus.push.addEventListener("receive", function(msg) {  
                console.log(msg)  
                console.log(that.$store.state.userInfo);  
                if (that.$store.state.userInfo != null) { //判断是否登录  
                    if (typeof(msg) != "object") {  
                        var msg = JSON.parse(msg);  
                    }  
                    if (plus.os.name != 'iOS') {  
                        var options = {};  
                        options.title = msg.title;  
                        if (msg.title == "下线通知") {  
                            uni.reLaunch({  
                                url: '/pages/index/login?sate=true',  
                            })  
                        }  
                        plus.push.createMessage(msg.content, msg.payload, options);  
                    } else if (msg.aps) {  
                        console.log(msg.aps)  
                    } else {  
                        switch (msg.payload) {  
                            case "LocalMSG"://ios进入判断  如果msg.payload为LocalMSG则不创建本地消息  
                                break;  
                            default:  
                                //创建本地消息  
                                var iosmsgstr = msg.content.replace(/\'/g, '"')  
                                var iosmsg = JSON.parse(iosmsgstr);//处理下消息内容  
                                var options = {  
                                    cover: false  
                                };  
                                //如果接收到下线推送  
                                if (iosmsg.title == "下线通知") {  
                                    uni.reLaunch({  
                                        url: '/pages/index/login?sate=true',  
                                    })  
                                }  
                                //创建消息并设置本地消息的msg.payload=LocalMSG(唯一标识)下次进入receive则直接break;  
                                plus.push.createMessage(iosmsg.content, "LocalMSG", options);  
                                break;  
                        }  
                    }  
                } else {  
                    console.log('receive未登录')  
                }  
            }, false);

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