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

个推推送的通知在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/)里面联系技术咨询

回梦無痕

回梦無痕 - 暂停服务

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

守护

守护 (作者)

mark

  • 4***@qq.com

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

    2019-03-12 14:29

1***@qq.com

1***@qq.com

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

三十九级台阶

三十九级台阶

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

  • 7***@qq.com

    兄弟,你的搞好么得

    2019-06-25 10:56

  • 三十九级台阶

    回复 7***@qq.com: 好了,contentAvailable改成0 !!!!!!!

    2019-06-27 15:54

  • 7***@qq.com

    你好,请问具体是怎么实现的?我这边就是监听到推送消息就弹框,但是有时候会重复弹

    2019-07-26 08:53

  • 1***@qq.com

    回复 7***@qq.com: 你好,重复弹框的问题解决了吗,能够帮忙解决一下,非常感谢

    2019-10-31 09:22

1***@qq.com

1***@qq.com

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

chinahappybeer

chinahappybeer - china happy beer

mark

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