5***@qq.com
5***@qq.com
  • 发布:2018-07-27 01:10
  • 更新:2018-07-27 01:10
  • 阅读:2181

plus.push结合个推使用,为何通知栏会收到两次内容?

分类:HTML5+

我的应用是:

1、网页使用个推的消息透传模板(php的)发送给app客户端:

$template->set_transmissionContent("{'title':'测试标题','content':'test content','payload':{'MsgID':'1234567890'}}");
注意:内容是按照h5+的push透传数据要求写的,其中payload也是json格式。
$template->set_title("这里填通知标题"); //通知栏标题
$template->set_text("这里填通知内容"); //通知栏内容

2、app仅安卓使用:
HelloH5的demo里有这句话:
不管应用在线还是离线,如果透传数据格式符合“{title:'标题',content:'内容',payload:'数据'}”格式,则在系统通知栏中显示消息,点击消息后触发“click”事件,可通过msg.title获取标题、msg.content获取内容、msg.payload获取数据;否则触发“receive”事件,可通过msg.payload获取完整透传数据。

于是仅写了监听click事件:

plus.push.addEventListener( "click", function( msg ) {
alert( "title: "+msg.title +", content: "+msg.content);
if ( msg.payload ) {
if ( typeof(msg.payload)=="string" ) {
alert( "payload(String): "+msg.payload );
} else {
alert( "payload(JSON): "+JSON.stringify(msg.payload) );
}
} else {
alert( "payload: undefined" );
}
}, false );

测试发现:首先是通知栏接收显示个推代码里的“标题和内容”,点击后再次显示“transmissionContent”里的内容(即h5要求的格式)

找不出原因,于是变通为:
1、舍弃click事件,改用receive事件
2、个推代码里不按照h5+的透传数据格式要求写,去除title和content,仅保留payload,即:
$template->set_transmissionContent("{'payload':{'MsgID':'1234567890'}}");
这样plus.push里就仅执行receive事件了。

2018-07-27 01:10 负责人:无 分享
已邀请:

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