title: Firebase Cloud Messaging with Node.js server
body: <p>I'm trying to send push notifications with FCM between individual devices using a node.js server and <strong>Swift</strong> <strong>2.2</strong> (based on Frank van Puffelen's <a href="https://firebase.googleblog.com/2016/08/sending-notifications-between-android.html" rel="nofollow">Sending notifications between Android devices with Firebase Database and Cloud Messaging</a>).</p>
  
  <p>The notification request is successfully being handled by both Firebase Database and the Node.js server (adding request to database, fetching data from database, sending notification to topic) but I'm not getting any <strong>alert</strong> on my device. </p>
  
  <p>When I launch the app, <code>func application(application: UIApplication, didReceiveRemoteNotification)</code> gets called and I'm able to print the notification but, compared to sending a notification through Firebase's interface, unfortunately no alert.</p>
  
  <p><code>userInfo</code> from Node.js notification (<strong>No Alert</strong>):</p>
  
  <pre><code>[aps: {
  alert =     {
  title = "This should be the text";
  };
  }, gcm.message_id: 0:1475766502047698%d4d04c12d4d04c12]
  </code></pre>
  
  <p><code>userInfo</code> from sending a notification through Firebase's interface (<strong>Alert works</strong>):</p>
  
  <pre><code>[gcm.notification.sound2: default, google.c.a.e: 1, aps: {
  alert = This should be the text;
  sound = default;
  }, gcm.n.e: 1, google.c.a.c_id: ##Some Id###, google.c.a.udt: 0, gcm.message_id: 0:1475766412557820%d4d04c12d4d04c12, google.c.a.ts: ##Some Id 2##]
  </code></pre>
  
  <p>index.js: </p>
  
  <pre><code>var express = require('express');
  var firebase = require("firebase");
  var request = require('request');
  var app = express();
  var path = require("path");
  var API_KEY = "Some Key"; // Your Firebase Cloud Server API key
  
  app.set('port', (process.env.PORT || 5000));
  
  app.use(express.static(__dirname + '/public'));
  
  // views is directory for all template files
  app.set('views', __dirname + '/views');
  app.set('view engine', 'ejs');
  
  app.get('/', function(request, response) {
  response.render('pages/index')
  });
  
  app.listen(app.get('port'), function() {
  console.log('Node app is running on port', app.get('port'));
  });
  
  firebase.initializeApp({
  serviceAccount: path.resolve(__dirname, './credentials/someCredentials.json'),
  databaseURL: "https://someURL.firebaseio.com"
  });
  
  ref = firebase.database().ref();
  
  function listenForNotificationRequests() {
  var requests = ref.child('notificationRequests');
  requests.on('child_added', function(requestSnapshot) {
  var request = requestSnapshot.val();
  sendNotificationToUser(
  request.username,
  request.message,
  function() {
  requestSnapshot.ref.remove();
  }
  );
  }, function(error) {
  console.error(error);
  });
  };
  
  function sendNotificationToUser(username, message, onSuccess) {
  request({
  url: 'https://fcm.googleapis.com/fcm/send',
  method: 'POST',
  headers: {
  'Content-Type' :' application/json',
  'Authorization': 'key='+API_KEY
  },
  body: JSON.stringify({
  notification: {
  title: message
  },
  to : '/topics/user_'+username
  })
  }, function(error, response, body) {
  if (error) { console.error(error); }
  else if (response.statusCode &gt;= 400) {
  console.error('HTTP Error: '+response.statusCode+' - '+response.statusMessage);
  }
  else {
  onSuccess();
  }
  });
  }
  
  // start listening
  listenForNotificationRequests();
  </code></pre>
  
  <p>I would really appreciate it if someone could help me out with this :) </p>