uni-app uni.onPushMessage方法没有返回 全部参数

uni-app uni.onPushMessage方法没有返回 全部参数

操作步骤:

  • 调用uni.onPushMessage 方法,监听到信息就能看见返回的内容

预期结果:

  • uni.onPushMessage方法应当返回后端返回的所有数据

实际结果:

  • 只返回了title和content,其他参数没有返回

bug描述:

对接unipush,后端调用前端云函数,前端能够正确拿到后端的参数
但是使用uni.onPushMessage方法获取推送信息,方法并没有返回后端的参数,只返回了title和content
uni.onPushMessage的文档并没有说明返回示例

信息类别 信息内容
产品分类 uniapp/App
PC开发环境 Windows
PC开发环境版本 win11 26100.7171
HBuilderX类型 正式
HBuilderX版本 4.85
手机系统 Android
手机系统版本 Android 15
手机厂商 小米
手机机型 小米14
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

Image Image Image


更多关于uni-app uni.onPushMessage方法没有返回 全部参数的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

用plus.push.addEventListener(receive) 试试呢 参考文档:https://www.html5plus.org/doc/zh_cn/push.html#plus.push.addEventListener

更多关于uni-app uni.onPushMessage方法没有返回 全部参数的实战教程也可以访问 https://www.itying.com/category-93-b0.html


根据你的描述,这确实是 uni-app 中 uni.onPushMessage 方法的一个常见问题。该方法在监听推送消息时,默认只返回 titlecontent 等基础字段,而不会自动透传后端发送的所有自定义参数。

原因分析: uni.onPushMessage 是 uni-app 客户端接收推送消息的标准事件,但其返回的数据结构经过封装处理,主要面向通知栏展示。后端通过 Unipush 发送的完整 payload(包括自定义参数)通常被包裹在消息体内部,不会直接平铺到回调参数中。

解决方案: 要获取完整的后端参数,你需要检查回调参数中的 payload 字段。推送的完整数据(包括自定义参数)一般会以 JSON 字符串的形式存放在 payload 里。请按以下方式调整代码:

uni.onPushMessage((message) => {
  console.log('收到推送消息:', message);
  
  // 重点:解析 payload 获取完整数据
  if (message.payload) {
    try {
      const payloadData = JSON.parse(message.payload);
      console.log('后端返回的全部参数:', payloadData);
      // 这里可以访问后端发送的所有自定义字段
    } catch (e) {
      console.error('payload 解析失败:', e);
    }
  }
});
回到顶部