【问题标题】:Why is the payload lost from FCM push notification?为什么 FCM 推送通知中的有效负载会丢失?
【发布时间】:2017-05-26 20:15:02
【问题描述】:

我已经使用 NodeJS 应用服务器集成了 FCM,并且能够使用以下代码成功发送推送通知。我在客户端使用 Service Worker 来处理 PWA 中的推送通知

fetch(firebase_url, {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'Authorization': `key=${firebase_auth}`
    },
    body: JSON.stringify({
        "to" : recieverToken,
        "data" : {
            "text": "Hello world"
        },
        "notification": {
            "title": "Portugal vs. Denmark",
            "body": "5 to 1"
        }
    })
})

我遇到的问题是payload 数据是null,如图所示,我找不到它背后的原因

【问题讨论】:

  • 看来你发错了。因为你发送的任何东西都不在那里。不仅是data,还有notificationto。您是否有可能错过了文档中的某些内容?
  • 没错。我认为 to 字段不会成为事件的一部分。它只是用来唯一标识消息应该发送给的用户
  • 而不是body,您是否尝试传递data
  • 这是一个使用 fetch 的普通 POST。您不能用数据替换 POST 正文

标签: javascript node.js firebase-cloud-messaging service-worker progressive-web-apps


【解决方案1】:
function post(postkey,messageTitle,messageBody) {
    $.ajax({
        type : 'POST',
        url : "https://fcm.googleapis.com/fcm/send",
        headers : {
            Authorization : 'key=%%YOUR FCMKEY%%'
        },
        contentType : 'application/json',
        data : JSON.stringify({
            "to": postkey,
            "notification": {
                "icon": 'qc/logo_Tran.png',
                "click_action": '%%YOUR URL%%',
                "body": messageBody,
                "title": messageTitle
            }
        }) ,
        success : function(response) {
            console.log(response);
        },
        error : function(xhr, status, error) {
            console.log(xhr.error);                   
        }
    });              
}

【讨论】:

  • 这确实以有用的方式回答了这个问题。 为什么你相信这就是答案? 如何它是如何工作的?在没有任何上下文或含义的情况下简单地告诉某人更改他们的代码并不能帮助他们了解他们做错了什么,而且对未来的读者也没有用处。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-21
  • 1970-01-01
  • 2018-04-04
  • 1970-01-01
  • 2017-07-20
  • 2017-12-04
  • 2017-05-31
相关资源
最近更新 更多