根哥
根哥
  • 发布:2025-12-01 15:28
  • 更新:2026-01-15 13:48
  • 阅读:134

uniPush2.0监听拿不到payload参数

分类:uniCloud

后端请求云函数传参了payload,前端监听打印拿不到payload
前端监听代码如下:click时打印没有payload入参
export default {
onLaunch: function() {
console.log('App Launch')
uni.onPushMessage((res) => {
// 监听【在线、离线】通知栏消息的点击
if(res.type == 'click'){
// 如果需要跳转app内指定页面,则自己实现下方的跳转代码。
uni.navigateTo({
//页面路径示例值:/pages/pushinfo/pushinfo
url:'指定页面路径'
})
}
// 监听【在线】消息到达。若云函数设置了 "force_notification":true,则不会触发此 receive。
if(res.type == 'receive'){
//开发者可以自己在此回调,调用 createMessage 创建通知栏消息展示。或者处理其它业务逻辑。
console.log("接收到的消息内容",res.payload);
}
})
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}

2025-12-01 15:28 负责人:无 分享
已邀请:
套马杆的套子

套马杆的套子 - 没有解决不了的问题,只有解决不完的问题

看看你云函数怎么传的

  • 根哥 (作者)

    private UniPushResponse callUniPushFunction(List<String> cids, String title, String content, Map<String,Object> payload) {

    try {

    // 构建请求URL

    String url = String.format("%s/%s", pushConfig.getServerUrl(), pushConfig.getFunctionName());

    Map<String,Object> params = new HashMap<>();

    params.put("request_id", String.valueOf(System.currentTimeMillis()));

    params.put("cids", cids);

    params.put("title", title);

    params.put("content", content);

    params.put("payload", payload);

    String jsonBody = JSON.toJSONString(params);

    log.info("UniPush请求参数: {}", jsonBody);


            // 发送HTTP请求  
    HttpPost httpPost = new HttpPost(url);
    httpPost.setHeader("Content-Type", "application/json; charset=utf-8");
    httpPost.setEntity(new StringEntity(jsonBody, StandardCharsets.UTF_8));

    HttpResponse response = httpClient.execute(httpPost);
    String responseBody = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
    log.info("UniPush响应: {}", responseBody);

    // 解析响应
    return JSON.parseObject(responseBody, UniPushResponse.class);

    } catch (Exception e) {
    log.error("调用uni-push云函数失败", e);
    UniPushResponse errorResponse = new UniPushResponse();
    errorResponse.setCode(500);
    errorResponse.setMessage("调用推送服务失败: " + e.getMessage());
    return errorResponse;
    }
    }

    payload是个map和cids同层级

    2025-12-02 09:56

  • 根哥 (作者)

    麻烦解惑一下,谢谢

    2025-12-02 09:56

  • 套马杆的套子

    回复 根哥: 你这个也不是云函数啊,看云函数的,你这java调用的那个云函数

    2025-12-02 13:19

  • 根哥 (作者)

    回复 套马杆的套子: 麻烦看下是不是这个原函数得配置界面

    2025-12-02 13:34

  • 套马杆的套子

    回复 根哥: 跟配置没关系,看云函数里面的代码咋写的

    2025-12-02 13:35

  • 根哥 (作者)

    回复 套马杆的套子: 你值得云函数里面是?

    2025-12-02 13:37

  • 根哥 (作者)

    回复 套马杆的套子: 没理解到你提到的云函数里面的代码,原文贴出了前端的监听的,还有个前端uniCloud.getPushManage的一个方法

    2025-12-02 13:44

  • 套马杆的套子

    回复 根哥: ...云函数是谁写的啊?你下面的图,是云函数的日志,要看云函数的代码,是在hbx中的uniCloud里

    2025-12-02 13:45

根哥

根哥 (作者)

云函数配置

根哥

根哥 (作者)

云函数调用日志

根哥

根哥 (作者)

前端uniCloud.getPushManager

  • 套马杆的套子

    对啊,这个图,你看你的payload,赋值赋的对么,赋的data,但是实际你从java端调用的时候,你传的key是payload

    2025-12-02 13:46

  • 根哥 (作者)

    回复 套马杆的套子:明白了,谢谢,前端老师取错了

    2025-12-02 13:50

  • 根哥 (作者)

    回复 套马杆的套子: 老师你好,这边后端每次请求加了request_id取得时间戳,但是多次发送相同消息后会报错duplicate message content,这是为啥

    2025-12-02 14:41

  • 套马杆的套子

    回复 根哥: 内容是不可以重复的,每次发的时候更改内容就没事了

    2025-12-02 15:45

  • 根哥 (作者)

    回复 套马杆的套子: 好吧

    2025-12-02 15:50

  • 根哥 (作者)

    回复 套马杆的套子: 但是我们有一类通知可能内容就是重复得,这种相当于没法支持了?比如催单类得通知,只能在内容中加点其他内容?

    2025-12-02 15:55

  • 套马杆的套子

    回复 根哥: 额,尽量还是别完全重复

    2025-12-03 08:33

w***@163.com

w***@163.com

想问一下老师,我们要在后台配置打开应用内特定页面,这块intent应该如何配置才能在

uni.onPushMessage((res) => {
console.log('"应用从推送服务器接收到推送消息事件', res);
// 监听通知栏消息的点击
if (res.type == "click") {
console.log('"click"-从系统推送服务点击消息启动应用事件;', res);
}

      // 监听在线推送消息,若云函数设置了 "force_notification":true,则不会触发此 receive。  
      if (res.type == "receive") {  
        console.log('"receive"-应用从推送服务器接收到推送消息事件', res);  
      }  
  })  

收到参数

目前配置了intent:intent:mall://com.mall/goods/goodsDetail#Intent;scheme=mall;package=com.mall;component=com.mall/io.dcloud.PandoraEntry;launchFlags=0x10008000;S.path=/m/goods-detail;S.query=goodsId=222;end

收到的消息如下:

{
"type": "click",
"data": {
"UUID": "androidPushMsg150355860",
"title": "0115push",
"appid": "UNIE0505174",
"content": "0115push 荣耀",
"payload": {
"title": "0115push",
"content": "0115push 荣耀"
}
}
}

为什么收不到path和query这两个参数

要回复问题请先登录注册