应用服务器推送了一条透传通知消息(采用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监听)
7 个回复
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
请问下,我的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
java后端服务推送时contentAvailable改为0试试 这个是正解!!!!!!
chinahappybeer - china happy beer
mark