Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to send Firebase Cloud Messaging from a node server?

Tags:

Is there any way to send notifications from FCM from a node.js server?

I haven't found anything about it inside documentation.

like image 686
Javier Manzano Avatar asked Jun 24 '16 15:06

Javier Manzano


People also ask

How do I use Firebase Cloud Messaging in node JS?

Before any Firebase cloud messages can be sent using Node. js, an additional JSON file needs to be generated and installed on the server. This file contains a private key that allows Node. js code to communicate through the SDK to the Firebase messaging service and is generated from within the Firebase console.

How do I send data to Firebase Cloud Messaging?

Go to Firebase console — →Project Settings — →Cloud Messaging. To send the message select Body — →Raw — →JSON(application/json). You can send Notification Payload , Data Payload and even both using POSTMAN service.


3 Answers

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

like image 105
Frank van Puffelen Avatar answered Sep 22 '22 19:09

Frank van Puffelen


//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"); 
like image 24
Hemant Avatar answered Sep 22 '22 19:09

Hemant


const admin = require('firebase-admin');
  const payload = { 
   notification: {
        title: 'this is title', body: 'this is body'
    },
   data: {
           balance: 100,
          priceplanId: 1235 
  }
}  
const deviceToken ='yourtoekn' | ['yourtoekn'];
admin.messaging().sendToDevice(deviceToken, newpayload)
                .then((_response) => console.log(_response))
                .catch(error => console.log(error));

emphasized text You can send a notification to both ios and Android devices;

like image 38
Tony Aziz Avatar answered Sep 25 '22 19:09

Tony Aziz