web-dev-qa-db-ja.com

Firebase Cloud Messagingをノードサーバーから送信する方法は?

FCMからnode.jsサーバーから通知を送信する方法はありますか?

私はドキュメント内でそれについて何も見つけていません。

20
Javier Manzano

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

アップデート(2017年4月):Cloud Functions for Firebaseでこれと非常によく似たコードを実行できるようになりました。 https://firebase.google.com/docs/functions/use-cases#notify_users_when_something_interesting_happens を参照してください

30
//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