Как я могу отправить push-уведомление (firebase) без консоли, когда я изменяю данные базы данных?

Я пытаюсь создать чат из 2 человек и сохранить сообщения в базе данных FireBase. Я хочу, чтобы, когда пользователь пишет сообщение, уведомление отправлялось другому.

DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
DatabaseReference mensajeRef= ref.child("mensaje");

Там я сохраняю сообщения, у меня готов класс 'FirebaseMessagingService', но я могу отправлять уведомления только с консоли Firebase.

0
задан 09.02.2017, 19:17
1 ответ

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);


exports.enviarNotificacion = functions.database.ref('LA RUTUA DE TU BASE DE DATO')
.onWrite(async (change, context) => {

 const myId = context.params.keyid;
  const id_hora = context.params.RefTelB;
  const id_nombre = context.params.keynombre;

  if (!change.after.val()) {
    return console.log('nose', myId, 'un-followed user', id_nombre);
  }
  console.log('tines un nuevo siguidor:', 'otroMas', 'for user:', id_nombre);

  const getDeviceTokensPromise = admin.database()
      .ref('RUTA DE LOS TOKEN').once('value'); ////tabla donde 

 
  let tokensSnapshot;
  let tokens;

  const results = await Promise.all([getDeviceTokensPromise]);
  tokensSnapshot = results[0];
  if (!tokensSnapshot.hasChildren()) {
    return console.log('No hay tokens de notificación para enviar.');
  }
  console.log('existen', tokensSnapshot.numChildren(), 'este token te a enviado una notificacion.');
  const payload = {
    notification: {
      title: `Nuevo msj!  ${id_hora}`,
      body: `${id_nombre} esta solicitando tu ayuda.`,
     // icon: follower.photoURL
    }
  };

  tokens = Object.keys(tokensSnapshot.val());
  const response = await admin.messaging().sendToDevice(tokens, payload);
  response.results.forEach((result, index) => {
    const error = result.error;
    if (error) {
      console.error('error a enviar la notificacion a', tokens[index], error);
     
      if (error.code === 'messaging/invalid-registration-token' ||
          error.code === 'messaging/registration-token-not-registered') {
       
      }
    }
  });

});
0
ответ дан 24.11.2019, 11:12