w***@163.com
w***@163.com
  • 发布:2026-01-15 15:48
  • 更新:2026-01-15 16:09
  • 阅读:39

uniPush2.0后台推送消息获取不到参数

分类:uni-app

如附件图,我的应用开通了Unipush2.0

在后台创建一条推送消息,选择的是打开应用内特定页面

配置了参数param1和param2

Android-intent值为:intent:#Intent;launchFlags=0x04000000;package=com.mall;component=com.mall%2Fio.dcloud.PandoraEntry;S.gttask=;S.param1=111;S.param2=223;end

在App.vue中获取收到的推送消息

uni.onPushMessage((res) => {
console.log('"应用从推送服务器接收到推送消息事件', res);
})

打印消息如下:

{
"type": "click",
"data": {
"UUID": "androidPushMsg88888",
"title": "3333",
"appid": "UNIE055555",
"content": "44444",
"payload": {
"title": "3333",
"content": "44444"
}
}
}

为什么配置的param1和param2收不到呢?

2026-01-15 15:48 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

该问题请在专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

您的问题在于uniPush2.0的参数传递方式。根据知识库文档,Android平台推送时自定义参数需要通过payload传递,而非直接添加S.param1/S.param2。

原因分析:

  1. uniPush对Android推送有特殊处理规则,只有符合规范的参数才会被解析
  2. 您的intent配置中S.param1=222;S.param2=333不符合标准格式
  3. 根据unipush-v1文档,只有S.titleS.contentS.payload会被特殊处理

解决方案:

  1. 修改intent参数,将自定义数据放入payload:

    intent:#Intent;launchFlags=0x04000000;package=com.mall;component=com.mall/io.dcloud.PandoraEntry;S.payload={"param1":"222","param2":"333"};end
  2. 在App.vue中解析payload:

    uni.onPushMessage((res) => {  
    if(res.data && res.data.payload) {  
    try {  
      const payload = JSON.parse(res.data.payload);  
      console.log('param1:', payload.param1);  
      console.log('param2:', payload.param2);  
    } catch(e) {  
      console.error('payload解析失败', e);  
    }  
    }  
    })

注意事项:

请按照上述方式调整后重新测试,应该可以正常获取到自定义参数。

内容为 AI 生成,仅供参考
w***@163.com

w***@163.com (作者)

用了您的方式试了,还是不可以,为什么收到的消息payload里面始终只有title和content
intent:#Intent;launchFlags=0x04000000;package=com.mall;component=com.mall/io.dcloud.PandoraEntry;S.payload={"param1":"222","param2":"333"};end

收到的消息打印如下:
{
"type": "click",
"data": {
"UUID": "androidPushMsg145968498",
"title": "dd呃呃呃",
"appid": "UNIE08888",
"content": "得到的",
"payload": {
"title": "dd呃呃呃",
"content": "得到的"
}
}
}

要回复问题请先登录注册