守护
守护
  • 发布:2017-10-08 21:08
  • 更新:2020-03-12 03:16
  • 阅读:1949

个推推送的通知在IOS手机后台运行时,触发两次click监听事件的问题

分类:HTML5+

应用服务器推送了一条透传通知消息(采用APNPayload.DictionaryAlertMsg模式发送透传),现在iOS可以收到透传通知。
客户端部分关键代码:

       // 监听点击消息事件  
    plus.push.addEventListener("click", function(msg) {  
        // 判断是从本地创建还是离线推送的消息  
        switch(msg.payload) {  
            case "LocalMSG":  
                console.log('点击本地创建消息启动:');  
                break;  
            default:  
                console.log('点击离线推送消息启动:');  
                break;  
        }  
        console.log('22222222222');  
        console.log(JSON.stringify(msg));  
    });
    // 监听在线消息事件  
    plus.push.addEventListener("receive", function(msg) {  
        console.log("11111111111111");  
        if(msg.aps) { // Apple APNS message  
            console.log('接收到在线APNS消息:');  
            console.log('msg.aps--->'+JSON.stringify(msg.aps));  
        } else {  
            console.log('接收到在线透传消息:');  
        }  
        console.log('msg--->'+JSON.stringify(msg));  
        //createLocalPushMsg(msg);  
    });

总体分三种情况:
1、应用在前台运行时:(默认不创建通知,只触发receive监听),收到的通知格式如下:
LOG: 11111111111111
LOG: 接收到在线透传消息:
LOG : msg--->{"title":"透传推送通知标题1","type":"receive","content":"透传推送通知内容1","payload":{"orderid":"1234567890"},"aps":null}

2、应用被关闭时:(收到一条通知,没有进入receive和click监听,只有点击了通知,才触发click事件),收到的通知格式如下:
LOG : 点击离线推送消息启动:
LOG : 22222222222
LOG : {"title":"应用名称","type":"click","content":"通知文本消息字符串","payload":{"gmid":"OSS-1008_80d928de06e8c7ed75b0bd6689abd963:cff3f9dc83684961ab8ab74d8cb4bf78:92214e036bc2f524021bbdec1c5253ce","gurl":"sdk.open.extension.getui.com:8123","orderid":"1234567890","ge":"1"},"aps":{"alert":{"body":"通知文本消息字符串","title":"通知标题"},"content-available":1,"sound":"default","mutable-content":1}}

3、应用在后台运行时:(收到一条通知,收到的时候进入click监听,点击了通知后,又触发一次click事件),收到的通知格式如下:

这条是收到通知时触发click监听的记录:
LOG : 点击离线推送消息启动:
LOG : 22222222222
LOG : {"title":"应用名称","type":"click","content":"通知文本消息字符串","payload":{"gurl":"sdk.open.extension.getui.com:8123","orderid":"1234567890","ge":"1","gmid":"OSS-1008_722ffcabfb3210ac19b4cd03ec76a28b:ddeed61447e2409c972dafb34108a8ac:92214e036bc2f524021bbdec1c5253ce"},"aps":{"alert":{"body":"通知文本消息字符串","title":"通知标题"},"mutable-content":1,"sound":"default","content-available":1}}

这条是点击通知时触发click监听的记录:
LOG : 点击离线推送消息启动:
LOG : 22222222222
LOG : {"title":"应用名称","type":"click","content":"通知文本消息字符串","payload":{"gmid":"OSS-1008_722ffcabfb3210ac19b4cd03ec76a28b:ddeed61447e2409c972dafb34108a8ac:92214e036bc2f524021bbdec1c5253ce","gurl":"sdk.open.extension.getui.com:8123","orderid":"1234567890","ge":"1"},"aps":{"alert":{"body":"通知文本消息字符串","title":"通知标题"},"content-available":1,"sound":"default","mutable-content":1}}

我的问题是在第3中情况下:使得我在收到透传推送通知的时候就已经调用了一次click监听,点击通知时又调用一次click监听,如果在click监听中药打开页面的话,也会重复打开两次。使得用户体验不好,请问大家有谁知道如何解决?

我希望收到推送通知的时候可以像上面2中,不在收到通知的时候触发click监听,只在点击通知时在触发click监听,最好也能像1一样,直接进入receive监听)

2017-10-08 21:08 负责人:无 分享
已邀请:
getui_johny

getui_johny - 个推技术支持

推送时contentAvailable改为0试试
如问题未能得到解决,可以从HB群或个推官网(https://www.getui.com/cn/)里面联系技术咨询

回梦無痕

回梦無痕 - qq565766672,论坛私信不回,有需要请加QQ,付费咨询指导。

这个问题我遇到过的,但是不是绝对会触发两次,有时候触发一次。后来
我在推送的json中加上了时间戳,
app内部做一个本地变量timerecord,
收到一次推送就判断这个timerecord是否等于json的时间戳,
不等于就替换这个变量并继续运行,
如果相等,就不运行了。

守护

守护 (作者)

mark

  • 452306705@qq.com

    请问下 你解决ios aps点击触发两次的情况了吗

    2019-03-12 14:29

173795180@qq.com

173795180@qq.com

请问下,我的click事件和receive事件都没反应的是什么问题呢?服务端已经通过java方式调用了透传消息模版

2505451091@qq.com

2505451091@qq.com

我的也是触发2次,不知道怎么解决,正在研究,有成功的麻烦告知下,谢谢

1241425486@qq.com

1241425486@qq.com

java后端服务推送时contentAvailable改为0试试 这个是正解!!!!!!

8925683@qq.com

要回复问题请先登录注册