uni-app 在线onPushMessage监听不到通知信息 版本:4.36
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 | 云端 |
关闭
force_notification去掉试试呢
最后怎么处理的? 我离线透传可以收到通知,点击可以打开app首页,但是没有触发click事件
在uni-app中,如果你发现onPushMessage
监听不到通知信息,可能是因为一些配置或代码实现上的问题。这里我将提供一个基本的代码示例,并说明一些常见的问题排查点,帮助你确保通知监听能够正常工作。
代码示例
首先,确保你的manifest.json
文件中已经配置了相关的推送权限和配置。对于uni-app,你需要在manifest.json
的mp-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>
问题排查
-
平台支持:确保你正在使用的平台支持
onPushMessage
。例如,微信小程序、H5等可能不支持或需要特定的配置。 -
证书配置:对于需要证书的平台(如iOS),确保你的证书配置正确,且已上传到开发者后台。
-
后台服务:确认你的服务器已正确配置推送服务,并且消息能够成功发送到客户端。
-
日志调试:使用
console.log
或更高级的日志工具来调试和跟踪消息接收的过程。 -
版本更新:确保你的uni-app和依赖库都是最新版本,有时候问题可能由旧版本的bug引起。
通过上述步骤和代码示例,你应该能够定位并解决onPushMessage
监听不到通知信息的问题。如果问题依然存在,建议查阅uni-app官方文档或社区论坛获取更多帮助。