How to send Firebase Cloud Messaging from a node server?
Sending messages through Firebase Cloud Messaging takes calling an HTTP end point as described in the documentation on sending downstream messages.
Something as simple as this could do the trick:
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'}
);
Update (April 2017): you can now also run code very similar to this in Cloud Functions for Firebase. See https://firebase.google.com/docs/functions/use-cases#notify_users_when_something_interesting_happens
//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");