web-dev-qa-db-fra.com

Comment envoyer Firebase Cloud Messaging depuis un serveur de noeud?

Existe-t-il un moyen d'envoyer des notifications à partir de FCM à partir d'un node.js serveur?

Je n'ai rien trouvé à ce sujet dans la documentation.

20
Javier Manzano

L'envoi de messages via Firebase Cloud Messaging nécessite l'appel d'un point de terminaison HTTP comme décrit dans la documentation sur l'envoi de messages en aval .

Quelque chose d'aussi simple que cela pourrait faire l'affaire:

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'}
);

Mise à jour (avril 2017): vous pouvez désormais également exécuter du code très similaire à celui-ci dans Cloud Functions for Firebase. Voir https://firebase.google.com/docs/functions/use-cases#notify_users_when_something_interesting_happens

30
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");
9
Hemant