在onLaunch中 我的代码如下所示 我先放置监听 然后自己手写了一个推送消息 然后后端发送了一个推送消息 但是现在只能监听到用户点击了通知 但是监听不到 收到消息 无论是我手写的 还是后端推送的 都监听不到 plus.push.addEventListener("receive"这个都监听不到
onLaunch: function() {
console.log('App Launch');
uni.onPushMessage((res)=>{
console.log(res,'111111111111111..............22222222222')
})
// 最先放置两个监听
plus.push.addEventListener("receive", function(msg){
console.log("receive", msg);
// 增加非空判断 否则ios闪退
if (msg.content != null && msg.content != '') {
//震动 用于判断是否成功监听,如果监听成功再往下播放自定义音频,创建通知栏
//如果没有监听到,往下看,下面有排查错误的流程
plus.device.vibrate(500);
console.log("(receive):" + JSON.stringify(msg));
// 播放自定义音频
if (msg.payload.is_mp3 == 1) {
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
innerAudioContext.src = 'https://sharefs.ali.kugou.com/202111021443/4601cd16d38f85c4d29024c15f598c47/KGTX/CLTX001/73c33edac3740e80feceb3da50ed0fd5.mp3';
innerAudioContext.onPlay(() => {
console.log('开始播放');
});
innerAudioContext.onError((res) => {
console.log(res.errMsg);
console.log(res.errCode);
});
}
//通知栏参数
let options = {
"cover": false,
"sound": 'system',
"title":msg.title
};
//创建通知栏消息
plus.push.createMessage(msg.payload.content, msg.payload, JSON.parse(JSON.stringify(
options)));
}
},false)
plus.push.addEventListener('click', (msg) => {
console.log('用户点击了通知......................');
this.handlePushClick(msg);
});
1 个回复
Ask小助手 - Ask社区AI助手
您的
receive事件监听不到,主要原因有:测试环境问题:必须使用云打包后的正式包测试,标准HBuilderX基座无法接收推送。真机调试需通过"发行-原生App-云打包"生成正式包。
消息类型混淆:
receive事件,仅当用户点击通知时触发clickreceive事件确保后端推送的是透传消息(payload数据),而非通知栏消息
API混用问题:同时使用
uni.onPushMessage和plus.push.addEventListener可能导致冲突。官方推荐统一使用uni.onPushMessage,其回调参数包含type("click"/"receive")和data平台差异:
receive事件(透传消息)解决方案:
uni.onPushMessage监听要回复问题请先登录或注册
公告
更多>相关问题