如何从节点服务器发送Firebase云消息传递?

Jav*_*ano 20 node.js firebase firebase-cloud-messaging

有没有办法FCMnode.js服务器发送通知?

我在文档中没有找到任何关于它的内容.

Fra*_*len 30

通过Firebase Cloud Messaging发送消息需要调用HTTP端点,如发送下游消息文档中所述.

像这样简单的东西可以做到这一点:

var request = require('request');

function sendMessageToUser(deviceId, message) {
  request({
    url: 'https://fcm.googleapis.com/fcm/send',
    method: 'POST',
    headers: {
      'Content-Type' :' application/json',
      'Authorization': 'key=AI...8o'
    },
    body: JSON.stringify(
      { "data": {
        "message": message
      },
        "to" : deviceId
      }
    )
  }, function(error, response, body) {
    if (error) { 
      console.error(error, response, body); 
    }
    else if (response.statusCode >= 400) { 
      console.error('HTTP Error: '+response.statusCode+' - '+response.statusMessage+'\n'+body); 
    }
    else {
      console.log('Done!')
    }
  });

sendMessageToUser(
  "d7x...KJQ",
  { message: 'Hello puf'}
);
Run Code Online (Sandbox Code Playgroud)

更新(2017年4月):您现在还可以在Cloud Functions for Firebase中运行与此非常相似的代码.请参阅https://firebase.google.com/docs/functions/use-cases#notify_users_when_something_interesting_happens

  • 在控制台,齿轮图标>项目设置>云消息传递中,您将看到您的API密钥(服务器密钥). (2认同)

小智 9

//I done by this code using node- gcm module.
//We're using the express framework and the node-gcm wrapper

var express = require('express');
var gcm = require('node-gcm');
//init express
var app = express();
app.get('/push', function (req, res) {
    var message = new gcm.Message({
        data: { key1: 'hello' },
        notification: {
            title: 'SPECOZ Offers1',
            body: 'body_data'
        }
    });

    // Set up the sender with you API key, prepare your recipients' registration tokens.
    var sender = new gcm.Sender('Api_Key');
    sender.send(message, 'device_token', function (err, response) {
        if (err) {
            console.error("Error:", err);


        }

        else console.log("Response:", response);
        res.send(response);
    });

});
app.listen("pass the port number");
Run Code Online (Sandbox Code Playgroud)