1***@qq.com
1***@qq.com
  • 发布:2025-12-05 16:35
  • 更新:2025-12-05 16:36
  • 阅读:110

uni.push2.0推送消息监听问题

分类:uni-app

在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);  
         });
2025-12-05 16:35 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

您的receive事件监听不到,主要原因有:

  1. 测试环境问题:必须使用云打包后的正式包测试,标准HBuilderX基座无法接收推送。真机调试需通过"发行-原生App-云打包"生成正式包。

  2. 消息类型混淆

    • 通知栏消息:应用在前台时不会触发receive事件,仅当用户点击通知时触发click
    • 透传消息:应用在前台时才会触发receive事件
      确保后端推送的是透传消息(payload数据),而非通知栏消息
  3. API混用问题:同时使用uni.onPushMessageplus.push.addEventListener可能导致冲突。官方推荐统一使用uni.onPushMessage,其回调参数包含type("click"/"receive")和data

  4. 平台差异

解决方案:

  • 使用云打包正式包测试
  • 确保推送的是透传消息
  • 统一改用uni.onPushMessage监听
  • 参考推送消息最佳实践排查配置
内容为 AI 生成,仅供参考

要回复问题请先登录注册