uni-app 在线onPushMessage监听不到通知信息 版本:4.36

发布于 1周前 作者 nodeper 来自 Uni-App

uni-app 在线onPushMessage监听不到通知信息 版本:4.36

产品分类

uniapp/App

测试过的手机

OPPO、华为、小米

示例代码

// 客户端代码:  
uni.onPushMessage(res => {  
    console.log('收到推送消息:', res); // 监听推送消息  

    var payload = res.data.payload;  
});  

// 服务端代码:  
exports.main = async (event, context) => {  
    let request = JSON.parse(event.body);  
    let functionType = request.functionType;  

    // 发送推送消息  
    if (functionType == "sendMessage") {  
        return await uniPush.sendMessage({  
            "push_clientid": request.push_clientid, // 推送用户标识  
            "title": request.title,  
            "content": request.content,  
            "payload": request.payload, // 透传信息  
            "sound": "pushsound",  
            "force_notification": true, // 无论是离线推送还是在线推送,都自创建通知栏消息  
            "badge": "+1", // 设置应用右上角数字  
            "request_id": request.request_id,  
            "content_available": request.available, // 0表示普通通知消息(默认为0); 1表示静默推送(无通知栏消息),静默推送时不需要填写其他参数。  
            "channel": {  
                "HW": "NORMAL",  
                "XM": "104519",  
                "OP": "fl_system",  
                "VV": 1  
            },  
            "settings": {  
                "ttl": -1,  
            },  
            "options": {  
                "IOS": {  
                    "type": "notify",  
                    "aps": {  
                        "content-available": 0  
                    },  
                    "auto_badge": "+1",  
                },  
                "HW": {  
                    "/message/android/notification/default_sound": false,  
                    "/message/android/notification/badge/add_num": 1,  
                    "/message/android/notification/badge/set_num": 1,  
                    "/message/android/notification/importance": "NORMAL",  
                    "/message/android/notification/channel_id": "yk_wrls",  
                    "/message/android/category": "VOIP"  
                },  
                "XM": {  
                    "/extra.channel_id": "104519",  
                    "/extra.locale": "zh_CN"  
                },  
                "OP": {  
                    "/channel_id": "fl_system"  
                },  
                "VV": {  
                    "/classification": 1  
                },  
                "UPS": {  
                    "bigText": request.title  
                }  
            }  
        })  
    }  
}

操作步骤

直接调用或通过代码逻辑调用发送通知接口,手机通知栏创建了通知信息,但是不进方法。

预期结果

手机创建通知栏信息,监听方法监听到信息。

实际结果

手机创建通知栏信息,监听方法监听不到信息,目前线上所有手机都监听不到通知信息。

Bug 描述

Uniapp 在线 onPushMessage 监听不到通知信息

开发环境与版本信息

项目创建方式 PC开发环境操作系统 PC开发环境操作系统版本号 HBuilderX类型 HBuilderX版本号 手机系统 页面类型 vue版本 打包方式
HBuilderX Windows win11 正式 4.36 全部 vue vue2 云端

4 回复

force_notification去掉试试呢

最后怎么处理的? 我离线透传可以收到通知,点击可以打开app首页,但是没有触发click事件

在uni-app中,如果你发现onPushMessage监听不到通知信息,可能是因为一些配置或代码实现上的问题。这里我将提供一个基本的代码示例,并说明一些常见的问题排查点,帮助你确保通知监听能够正常工作。

代码示例

首先,确保你的manifest.json文件中已经配置了相关的推送权限和配置。对于uni-app,你需要在manifest.jsonmp-weixin或其他平台配置中添加推送相关的设置(具体设置根据平台而异,这里以微信小程序为例):

"mp-weixin": {
    "appid": "your-app-id",
    "setting": {
        "requestDomain": ["your-request-domain"],
        "wsRequestDomain": ["your-ws-request-domain"],
        "uploadDomain": ["your-upload-domain"],
        "downloadDomain": ["your-download-domain"],
        "debug": false
    },
    "usingComponents": true,
    "permission": {
        "scope.userLocation": {
            "desc": "你的位置信息将用于小程序位置接口的效果展示"
        }
    },
    // 确保这里配置了推送相关的权限,具体配置根据平台文档
}

然后,在你的App.vue文件中添加onPushMessage监听:

<script>
export default {
    onLaunch() {
        // 监听推送消息
        if (uni.onPushMessage) {
            uni.onPushMessage((res) => {
                if (res.type === 'receiveMessage') {
                    console.log('收到下行消息:', res.data);
                    // 在这里处理你的消息逻辑
                }
            });
        } else {
            console.warn('当前平台不支持onPushMessage');
        }
    },
    // 其他生命周期函数...
};
</script>

问题排查

  1. 平台支持:确保你正在使用的平台支持onPushMessage。例如,微信小程序、H5等可能不支持或需要特定的配置。

  2. 证书配置:对于需要证书的平台(如iOS),确保你的证书配置正确,且已上传到开发者后台。

  3. 后台服务:确认你的服务器已正确配置推送服务,并且消息能够成功发送到客户端。

  4. 日志调试:使用console.log或更高级的日志工具来调试和跟踪消息接收的过程。

  5. 版本更新:确保你的uni-app和依赖库都是最新版本,有时候问题可能由旧版本的bug引起。

通过上述步骤和代码示例,你应该能够定位并解决onPushMessage监听不到通知信息的问题。如果问题依然存在,建议查阅uni-app官方文档或社区论坛获取更多帮助。

回到顶部