sankar muniyappa
sankar muniyappa

Reputation: 356

Send push notifications with two Firebase projects

I'm using Admin SDK for node.js for sending the push notifications. Followed the tutorial and initialized the multiple projects with like examples given with this link.

I need to know how to send push notifications with two projects using with node.js. Used below methods for sending notifications two projects based its working with default project but another project getting error like below

exports.send_test_mailer = function(req, res) {
  // Default project
  var registrationToken = ["f-vRsDouUFQ:APA91bGktVzu3WjKGqeXqdiYPI8B0lQXs34TkJS4p7LaMiFGfp5LdfB1ZjEhO3CY5ci92apqgt1hEJY0ml11C4hxYUaPfDl7PeDHhcmDGur0JUx5l3M2mLEj30epwRBWVsE4xMSTls4f"];
  var payload = {
    notification: {
      title: "driver app",
      body: "driver app push notfications on the day."
    },
    data: {
      score: "850",
      time: "2:45"
    }
  };
  firebaseAdmin.messaging().sendToDevice(registrationToken, payload)
    .then(function(response) {
    console.log("Successfully sent message driver:", JSON.stringify(response));
  })
  .catch(function(error) {
    console.log("Error sending message driver:", JSON.stringify(error));
  });
  // Second project
  var registrationTokens = ["dzXRXUMIB5w:APA91bHSArtroO8M33IHxaslQTugTcEzJcfkbsXEhwbXbvVzBws-aqG4aqKNr37j8WpZev7lolX7cFQlAKYZ1QV_EgC6zTGeT41n3lvSpcDyBg6t4SZZaoPe7nUO9sbdcXA2KDguxAbk"];
  var payloads = {
    notification: {
      title: "customer app",
      body: "customer app push notfications on the day."
    },
    data: {
      score: "850",
      time: "2:45"
    }
  };
  firebaseAdmin.messaging().sendToDevice(registrationTokens, payloads)
    .then(function(response) {
    console.log("Successfully sent message customer:", JSON.stringify(response));
  })
  .catch(function(error) {
    console.log("Error sending message customer:", JSON.stringify(error));
  }); 
};

Error

{"results":[{"error":{"code":"messaging/registration-token-not-registered","message":"The provided registration token is not registered. A previously valid registration token can be unregistered for a variety of reasons. See the error documentation for more details. Remove this registration token and stop using it to send messages."}},{"error":{"code":"messaging/mismatched-credential","message":"The credential used to authenticate this SDK does not have permission to send messages to the device corresponding to the provided registration token. Make sure the credential and registration token both belong to the same Firebase project."}}],"canonicalRegistrationTokenCount":0,"failureCount":2,"successCount":0,"multicastId":9014981858701063000}

Upvotes: 3

Views: 2098

Answers (1)

sankar muniyappa
sankar muniyappa

Reputation: 356

Here is my answer

var ServiceAccount = require("./path your default app file.json");
var ServiceAccount1 = require("./path your second app file.json");

var serviceAppConfig = {
  credential: firebaseAdmin.credential.cert(ServiceAccount),
  databaseURL: "https://your firebase default app url"
};

// Initialize the default app
var serviceApp = firebaseAdmin.initializeApp(serviceAppConfig);
//console.log(serviceApp.name);  // "[DEFAULT]"

// Retrieve services via the defaultApp variable...
var serviceAuth = serviceApp.auth();
var serviceDatabase = serviceApp.database();
// Get the Messaging service for the default app
global.serviceMessaging = firebaseAdmin.messaging();

var service1AppConfig = {
  credential: firebaseAdmin.credential.cert(ServiceAccount1),
  databaseURL: "https://your firebase url second app"
};

// Initialize another app with a different config
var service1App = firebaseAdmin.initializeApp(service1AppConfig, "App2 name");

// Use the otherApp variable to retrieve the other app's services
var service1Auth = service1App.auth();
var service1Database = service1App.database();
// Get the Messaging service for a given app
global.service1Messaging = firebaseAdmin.messaging(service1App);

Upvotes: 5

Related Questions