FCM通知回复服务器

时间:2017-11-16 06:08:40

标签: push-notification google-cloud-messaging firebase-cloud-messaging

有一种推送通知服务,可以将消息从Web服务器发送到应用程序设备。该应用程序已实现onMessageReceived()方法。但是,并非所有消息都已发送,而且我已经在某处读到了 delivery_receipt_request 字段,当设置为 true 然后(FCM)时,回复提及该消息的服务器无论是否交付。我想知道如果邮件传递给我的发件人的旁边代码,如何从应用程序中捕获该回复。

1 个答案:

答案 0 :(得分:0)

选项1:通过XMPP

您需要在后端运行XMPP客户端。此客户端应使用您的项目参数连接到FCM。然后,您将能够处理FCM发送给您的邮件传递节。这是婴儿步骤:

  1. 按照https://www.npmjs.com/package/node-xcs中的步骤设置XMPP客户端,使用FCM项目参数导出环境变量。
  2. 您可以通过那里发送消息。
  3. 收听消息传递节:
  4.     client.on('stanza', function(stanza) {
            //HERE IS WHERE YOU PROCESS THE STANZA
            console.log('Please process me. I AM, the stanza: ', stanza.toString())
        })

    您将获得的消息传递的节将如下所示:

    <message id="">
      <gcm xmlns="google:mobile:data">
      {
          "category":"com.example.yourapp", // to know which app sent it
          "data":
          {
             “message_status":"MESSAGE_SENT_TO_DEVICE",
             “original_message_id”:”m-1366082849205”
             “device_registration_id”: “REGISTRATION_ID”
          },
          "message_id":"dr2:m-1366082849205",
          "message_type":"receipt",
          "from":"gcm.googleapis.com"
      }
      </gcm>
    </message>
    

    目前只有CCS(XMPP)支持上游消息传递。把自己弄出来。

    选项2:通过HTTP

    现在,如果您决定使用FCM HTTP协议来发送消息,那么您必须解释在进行HTTP呼叫时收到的响应。您可以通过查看HTTP响应标头和响应正文中的错误来判断消息是否已发送。此处描述了响应的结构:https://firebase.google.com/docs/cloud-messaging/http-server-ref#interpret-downstream

    再次,把自己打倒。