2016-06-24 29 views

risposta

22

L'invio di messaggi tramite Firebase Cloud Messaging richiede la chiamata di un endpoint HTTP come descritto nello documentation on sending downstream messages.

Qualcosa di semplice come questo potrebbe fare il trucco:

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

Aggiornamento (aprile 2017): ora è possibile anche eseguire codice molto simile a questo nelle funzioni cloud per Firebase. Vedi https://firebase.google.com/docs/functions/use-cases#notify_users_when_something_interesting_happens

+0

Grazie! ma quale è la variabile YOUR_API_KEY_HERE ?? Non so come ottenere quella chiave dalla console FCM ... –

+2

Nella console, icona Ingranaggio> Impostazioni progetto> Cloud Messaging, vedrai la tua chiave API (chiave del server). –

+1

Sto provando questo e non ottengo un errore, ma non vedo neanche le notifiche. C'è una possibile ragione per questo? Ho provato un deviceID specifico e un argomento ... l'esempio di quickstart utilizza "/ topic/news", quindi l'ho fatto. *** per iOS btw, ma i parametri sono gli stessi penso ... – ingrid

8
//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");