uni-app的app项目,使用html5+的plus.push.addEventListener('click') 方法监听点击事件不执行,但是点击会执行plus.push.addEventListener('receive')方法,receive不是应用从推送服务器接收到推送消息事件吗,怎么会执行点击事件
https://www.html5plus.org/doc/zh_cn/push.html#plus.push.addEventListener
- 发布:2019-04-27 10:48
- 更新:2021-05-13 10:05
- 阅读:8215
最佳回复
我总结的
//1.在线
// 1.1安卓
// 1.1.1 服务端推送为透传消息,符合标准格式,所以进入通知中心,点击则触发click
// 1.1.2 服务端推送为透传消息,不符合标准格式,不会进入通知中心,receive会接收到消息
// 1.2 IOS
// 1.2.1 IOS在线会进入receive,不会进入click,手动创建本地消息(iOS平台创建本地消息也会触发监听的"receive"事件)
// 1.2.2 IOS点击手动创建的本地消息也会出发 click事件
//2.不在线
// 2.1 安卓不在线收不到任何消息
// 2.1 IOS 不在线会收到APNS系统推送,点击通知栏则会进入click
安卓端:
收到推送的时候receive监听有回调,点击通知的时候receive监听也回调了,全程click监听都没有调用到
由于没上应用市场,所以推送服务暂时没走厂商通道
/* 安卓、iOS */
handlePush: function() {
try {
plus.runtime.setBadgeNumber(0);
if (plus.os.name == 'iOS') { //iOS处理
var GeTuiSdk = plus.ios.importClass('GeTuiSdk');
GeTuiSdk.resetBadge();
}
} catch (e) {
plus.runtime.setBadgeNumber(0);
console.log('清除角标异常');
}
//监听系统通知栏消息点击事件
plus.push.addEventListener('click', (message) => {
this.onClickPushItem(message);
}, false);
//监听接收透传消息事件
plus.push.addEventListener('receive', (message) => {
if (plus.os.name == 'iOS') { //iOS处理
plus.runtime.setBadgeNumber(0);
} else {
//安卓端不处理消息数据
// this.newsConfirm(message);
plus.runtime.setBadgeNumber(0);
}
}, false);
},
-
你好,我使用你提供的代码依然无法执行click回调
我使用的是离线打包的方式,参考的是 Android平台离线打包推送插件配置
不知道你那边能否提供一下demo2020-11-10 16:09
-
2020-11-16 17:51:53.211 18803-18935/com.tslm I/console: [LOG]推送信息 click message = {"UUID":"androidPushMsg134621604","title":"XXXX","appid":"UNI4854B5E","content":"哈哈哈","payload":"{\"title\":\"XXXX\",\"content\":\"哈哈哈\"}"} at App.vue:93
2020-11-16 17:51:53.225 18803-18935/com.tslm I/console: [LOG]推送信息 getAllMessage msg = {"UUID":"androidPushMsg74491384","title":"XXXX","appid":"UNI4854B5E","content":"哈哈哈","payload":"{\"content\":\"哈哈哈\",\"createTime\":1605520302755,\"isRead\":0,\"memberId\":1477,\"messageType\":28,\"sendTime\":1605520302755,\"senderId\":544,\"senderName\":\"wo叫天然呆\",\"tenantId\":2}"} at App.vue:97
2020-11-16 17:51:53.226 18803-18935/com.tslm I/console: [LOG]推送信息 getAllMessage msg = {"UUID":"androidPushMsg87544514","title":"XXXX","appid":"UNI4854B5E","content":"哈哈哈","payload":"{\"content\":\"哈哈哈\",\"createTime\":1605520302755,\"isRead\":0,\"memberId\":1477,\"messageType\":28,\"sendTime\":1605520302755,\"senderId\":544,\"senderName\":\"wo叫天然呆\",\"tenantId\":2}"} at App.vue:97
2020-11-16 17:51:53.250 18803-18935/com.tslm I/console: [LOG]推送信息 receive message = {"UUID":"androidPushMsg87544514","title":"xxxx","appid":"UNI4854B5E","content":"哈哈哈","payload":"{\"content\":\"哈哈哈\",\"createTime\":1605520302755,\"isRead\":0,\"memberId\":1477,\"messageType\":28,\"sendTime\":1605520302755,\"senderId\":544,\"senderName\":\"wo叫天然呆\",\"tenantId\":2}"} at App.vue:104
点击通知的时候先调用了click的回调,然后msg里面的payload数据丢失了,我通过plus.push.getAllMessage()获取到消息列表,发现里面有2条消息,这个也是很奇怪,然后它还会再次调用到receive的回调,这正常么?
2020-11-16 17:59
i***@vip.qq.com
能不能留个联系方式,push实在弄不了了
2023-03-23 16:15