Cloud Functions para Firebase

1. Información general

En este laboratorio de código, aprenderá a usar el SDK de Firebase para Google Cloud Functions para mejorar una aplicación web de chat y cómo usar Cloud Functions para enviar notificaciones a los usuarios de la aplicación de chat.

3b1284f5144b54f6.png

Lo que aprenderás

  • Crea funciones de Google Cloud con el SDK de Firebase.
  • Active Cloud Functions según los eventos de Auth, Cloud Storage y Cloud Firestore.
  • Agrega compatibilidad con Firebase Cloud Messaging a tu aplicación web.

Lo que necesitarás

  • Una tarjeta de crédito. Cloud Functions para Firebase requiere el plan Firebase Blaze, lo que significa que tendrás que habilitar la facturación en tu proyecto de Firebase con una tarjeta de crédito.
  • El editor IDE / texto de su elección como WebStorm , Atom o sublime .
  • Un terminal para ejecutar comandos de shell con NodeJS v9 instalado.
  • Un navegador como Chrome.
  • El código de muestra. Vea el siguiente paso para esto.

2. Obtén el código de muestra

Clonar el repositorio GitHub desde la línea de comandos:

git clone https://github.com/firebase/friendlychat

Importar la aplicación de inicio

Con su IDE, abra o importe el android_studio_folder.png cloud-functions-start directorio desde el directorio de código de ejemplo. Este directorio contiene el código de inicio para el laboratorio de código que consiste en una aplicación web de chat completamente funcional.

3. Crea un proyecto de Firebase y configura tu aplicación.

Crear proyecto

En Firebase consola , haga clic en Agregar proyecto y lo llaman FriendlyChat.

Haga clic en Crear proyecto.

Actualice al plan Blaze

Para utilizar las funciones de la nube de Firebase, tendrá a su proyecto upgade Firebase al plan de facturación Blaze . Esto requerirá que agregue una tarjeta de crédito u otro instrumento de facturación a su cuenta de Google Cloud.

Todos los proyectos de Firebase, incluidos los del plan Blaze, aún tienen acceso a las cuotas de uso gratuitas para Cloud Functions. Los pasos descritos en este codelab estarán dentro de los límites de uso del nivel gratuito. Sin embargo, verá pequeñas cargas ( aproximadamente $ 0,03 ) de almacenamiento en la nube que se utiliza para alojar sus funciones forman la nube imágenes.

Si no tiene acceso a una tarjeta de crédito o se siente incómodo de continuar con el plan de Blaze, considere el uso de la Firebase emulador suite que le permitirá emular las funciones de la nube de forma gratuita en su máquina local.

Habilitar la autenticación de Google

Para permitir que los usuarios inicien sesión en la aplicación, usaremos la autenticación de Google, que debe estar habilitada.

En Firebase consola, abra la sección Construir> Autenticación> Inicio de sesión en la pestaña del método (o haga clic aquí para ir allí). A continuación, habilite el inicio de sesión en Google proveedor y haga clic en Guardar. Esto permitirá a los usuarios iniciar sesión en la aplicación web con sus cuentas de Google.

Además, no dude para establecer el nombre del lado público de su aplicación a friendly chat:

8290061806aacb46.png

Habilitar almacenamiento en la nube

La aplicación usa Cloud Storage para cargar imágenes. Para habilitar el almacenamiento en la nube en su proyecto Firebase, visite la sección de almacenamiento y haga clic en el botón empezar. Siga los pasos allí, y para la ubicación de Cloud Storage, habrá un valor predeterminado para usar. Haga clic en Listo después.

Agregar una aplicación web

En Firebase Console, agregue una aplicación web. Para ello, vaya a Configuración del proyecto y vaya a Agregar aplicación. Recoger web como la plataforma y marque la casilla para la creación de Firebase de alojamiento, a continuación, registrar la aplicación y haga clic en Siguiente para el resto de los pasos, por último, al hacer clic en Continuar a la consola.

4. Instale la interfaz de línea de comandos de Firebase

La interfaz de línea de comandos de Firebase (CLI) te permitirá entregar la aplicación web de forma local e implementar tu aplicación web y Cloud Functions.

Para instalar o actualizar la CLI, ejecute el siguiente comando npm:

npm -g install firebase-tools

Para verificar que la CLI se haya instalado correctamente, abra una consola y ejecute:

firebase --version

Asegúrese de que la versión de la base del fuego CLI está por encima de 4.0.0 para que tenga todas las últimas características requeridas para las funciones de la nube. Si no es así, ejecute npm install -g firebase-tools para mejorar como se muestra arriba.

Autorice Firebase CLI ejecutando:

firebase login

Asegúrese de que está en la cloud-functions-start el directorio, a continuación, establecer la base del fuego CLI para utilizar su Proyecto Firebase:

firebase use --add

A continuación, seleccione su ID de proyecto y siga las instrucciones. Cuando se le solicite, se puede elegir cualquier alias, como codelab .

5. Implementar y ejecutar la aplicación web

Ahora que ha importado y configurado su proyecto, ¡está listo para ejecutar la aplicación web por primera vez! Abra una ventana de terminal, vaya a la cloud-functions-start carpeta, y desplegar la aplicación web a Firebase alojamiento usando:

firebase deploy --except functions

Esta es la salida de la consola que debería ver:

i deploying database, storage, hosting
✔  database: rules ready to deploy.
i  storage: checking rules for compilation errors...
✔  storage: rules file compiled successfully
i  hosting: preparing ./ directory for upload...
✔  hosting: ./ folder uploaded successfully
✔ storage: rules file compiled successfully
✔ hosting: 8 files uploaded successfully
i starting release process (may take several minutes)...

✔ Deploy complete!

Project Console: https://console.firebase.google.com/project/friendlychat-1234/overview
Hosting URL: https://friendlychat-1234.firebaseapp.com

Abra la aplicación web

La última línea debe mostrar la URL de alojamiento. La aplicación web ahora debería ser servida desde esta URL, que debería tener el formato https: // <project-id> .firebaseapp.com. Abrelo. Debería ver la interfaz de usuario en funcionamiento de una aplicación de chat.

Iniciar sesión en la aplicación utilizando el botón Iniciar sesión con GOOGLE y no dude en añadir algunos mensajes e imágenes de correos:

3b1284f5144b54f6.png

Si inicia sesión en la aplicación por primera vez en un navegador nuevo, asegúrese de permitir las notificaciones cuando se le solicite: 8b9d0c66dc36153d.png

Necesitaremos tener las notificaciones habilitadas en un momento posterior.

Si ha hecho clic accidentalmente bloque, puede cambiar esta configuración haciendo clic en el botón 🔒 seguro a la izquierda de la URL en la Chrome Omnibar y alternar el bar junto a Notificaciones:

e926868b0546ed71.png

Ahora, agregaremos algunas funciones con el SDK de Firebase para Cloud Functions.

6. El directorio de funciones

Cloud Functions le permite tener fácilmente código que se ejecuta en la nube sin tener que configurar un servidor. Analizaremos cómo crear funciones que reaccionen a los eventos de base de datos de Firebase Auth, Cloud Storage y Firebase Firestore. Comencemos con Auth.

Cuando se utiliza el SDK Firebase para las funciones de la nube, su código de Funciones vivirá bajo la functions de directorio (por defecto). Su código de funciones es también un Node.js aplicación y por lo tanto necesita un package.json que da alguna información sobre su aplicación y enumera las dependencias.

Para que sea más fácil para usted, que ya hemos creado la functions/index.js archivo en el que el código irá. Siéntase libre de inspeccionar este archivo antes de seguir adelante.

cd functions
ls

Si no está familiarizado con Node.js , aprender más sobre él antes de continuar el laboratorio de programación sería de gran ayuda.

El package.json archivo ya lista dos dependencias necesarias: el SDK Firebase para las funciones de la nube y el SDK del administrador Firebase . Para instalar de forma local, vaya a las functions carpeta y ejecutar:

npm install

Ahora vamos a echar un vistazo a la index.js archivo:

index.js

/**
 * Copyright 2017 Google Inc. All Rights Reserved.
 * ...
 */

// TODO(DEVELOPER): Import the Cloud Functions for Firebase and the Firebase Admin modules here.

// TODO(DEVELOPER): Write the addWelcomeMessage Function here.

// TODO(DEVELOPER): Write the blurImages Function here.

// TODO(DEVELOPER): Write the sendNotification Function here.

Importaremos los módulos requeridos y luego escribiremos tres funciones en lugar de las tareas pendientes. Comencemos con la importación de los módulos de nodo requeridos.

7. Importa los módulos de administración de Cloud Functions y Firebase

Se requerirán dos módulos durante este codelab: firebase-functions permite la escritura de la nube Funciones desencadenantes y los registros mientras firebase-admin permite el uso de la plataforma Firebase en un servidor con acceso de administrador a hacer acciones como escribir en la nube Firestore o el envío de notificaciones FCM.

En el index.js archivo, reemplace la primera TODO con lo siguiente:

index.js

/**
 * Copyright 2017 Google Inc. All Rights Reserved.
 * ...
 */

// Import the Firebase SDK for Google Cloud Functions.
const functions = require('firebase-functions');
// Import and initialize the Firebase Admin SDK.
const admin = require('firebase-admin');
admin.initializeApp();

// TODO(DEVELOPER): Write the addWelcomeMessage Function here.

// TODO(DEVELOPER): Write the blurImages Function here.

// TODO(DEVELOPER): Write the sendNotification Function here.

El SDK del administrador Firebase se puede configurar de forma automática cuando se despliegan en un entorno de nube Funciones u otros recipientes de Google Cloud Platform, y esto sucede cuando llamamos admin.initializeApp() sin argumentos.

Ahora, agreguemos una función que se ejecute cuando un usuario inicia sesión por primera vez en la aplicación de chat, y agregaremos un mensaje de chat para darle la bienvenida al usuario.

8. Bienvenida a nuevos usuarios

Estructura de mensajes de chat

Los mensajes publicados en el feed de chat de FriendlyChat se almacenan en Cloud Firestore. Echemos un vistazo a la estructura de datos que usamos para un mensaje. Para hacer esto, publique un nuevo mensaje en el chat que diga "Hola mundo":

11f5a676fbb1a69a.png

Esto debería aparecer como:

fe6d1c020d0744cf.png

En Firebase consola, haga clic en Firestore base de datos en la sección Generar. Debería ver la colección de mensajes y un documento que contiene el mensaje que escribió:

442c9c10b5e2b245.png

Como se puede ver, los mensajes de chat se almacenan en la nube Firestore como un documento con name , profilePicUrl , text , y timestamp atributos añadidos a la messages colección.

Agregar mensajes de bienvenida

La primera función de la nube añade un mensaje que da la bienvenida a los nuevos usuarios a la charla. Para ello, podemos utilizar el gatillo functions.auth().onCreate , que se ejecuta la función cada vez que un usuario inicia sesión en por primera vez en la aplicación Firebase. Añadir los addWelcomeMessages funcionan en su index.js archivo:

index.js

// Adds a message that welcomes new users into the chat.
exports.addWelcomeMessages = functions.auth.user().onCreate(async (user) => {
  functions.logger.log('A new user signed in for the first time.');
  const fullName = user.displayName || 'Anonymous';

  // Saves the new welcome message into the database
  // which then displays it in the FriendlyChat clients.
  await admin.firestore().collection('messages').add({
    name: 'Firebase Bot',
    profilePicUrl: '/images/firebase-logo.png', // Firebase logo
    text: `${fullName} signed in for the first time! Welcome!`,
    timestamp: admin.firestore.FieldValue.serverTimestamp(),
  });
  functions.logger.log('Welcome message written to database.');
});

La adición de esta función al especiales exports objeto es forma de hacer la función accesible fuera del archivo actual del nodo y se requiere para las funciones de la nube.

En la función anterior, estamos agregando un nuevo mensaje de bienvenida publicado por "Firebase Bot" a la lista de mensajes de chat. Estamos haciendo esto utilizando el add método en el messages de recogida en la nube Firestore, que es donde se almacenan los mensajes de chat.

Dado que esta es una operación asíncrona, tenemos que devolver la promesa que indica cuando la nube tiene Firestore terminado de escribir por lo que las funciones de la nube no se ejecutan demasiado pronto.

Implementar Cloud Functions

Cloud Functions solo estará activo después de que las haya implementado. Para hacerlo, ejecute esto en la línea de comando:

firebase deploy --only functions

Esta es la salida de la consola que debería ver:

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
⚠  functions: missing necessary APIs. Enabling now...
i  env: ensuring necessary APIs are enabled...
⚠  env: missing necessary APIs. Enabling now...
i  functions: waiting for APIs to activate...
i  env: waiting for APIs to activate...
✔  env: all necessary APIs are enabled
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (X.XX KB) for uploading
✔  functions: functions folder uploaded successfully
i  starting release process (may take several minutes)...
i  functions: creating function addWelcomeMessages...
✔  functions[addWelcomeMessages]: Successful create operation. 
✔  functions: all functions deployed successfully!

✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/friendlypchat-1234/overview

Prueba la función

Una vez que la función se haya implementado correctamente, deberá tener un usuario que inicie sesión por primera vez.

  1. Abra su aplicación en su navegador usando el URL de alojamiento (en forma de https://<project-id>.firebaseapp.com ).
  2. Con un nuevo usuario, inicia sesión por primera vez en su aplicación utilizando el botón Iniciar sesión.

262535d1b1223c65.png

  1. Después de iniciar sesión, se debe mostrar un mensaje de bienvenida automáticamente:

1c70e0d64b23525b.png

9. Moderación de imágenes

Los usuarios pueden subir todo tipo de imágenes en el chat, y siempre es importante moderar las imágenes ofensivas, especialmente en las plataformas sociales públicas. En FriendlyChat, las imágenes que se publican en el chat son almacenados en Google Cloud Storage .

Con las funciones de la nube, se puede detectar nuevos archivos de imagen utilizando el functions.storage().onFinalize gatillo. Esto se ejecutará cada vez que se cargue o modifique un archivo nuevo en Cloud Storage.

Para moderar imágenes, pasaremos por el siguiente proceso:

  1. Compruebe si la imagen se marca como adulto o violenta utilizando la API de la nube de la visión .
  2. Si la imagen se ha marcado, descárguela en la instancia de Functions en ejecución.
  3. Difuminar la imagen utilizando ImageMagick .
  4. Sube la imagen borrosa a Cloud Storage.

Habilita la API de Cloud Vision

Dado que usaremos la API de Google Cloud Vision en esta función, debe habilitar la API en su proyecto de base de fuego. Siga este enlace , a continuación, seleccione su proyecto Firebase y habilitar la API:

5c77fee51ec5de49.png

Instalar dependencias

Para imágenes moderados, vamos a utilizar la biblioteca de clientes de Google Cloud Visión para Node.js, @ google-cloud / visión , para ejecutar las imágenes a través de la API de la nube de la visión para detectar imágenes inapropiadas.

Para instalar este paquete en su aplicación Funciones Nube, ejecute el siguiente npm install --save comando. Asegúrese de que usted hace esto de la functions directorio.

npm install --save @google-cloud/vision@2.4.0

Esto instalará el paquete localmente y añadirlos como una dependencia declarada en su package.json archivo.

Importar y configurar dependencias

Para importar las dependencias que se instalaron y algunos módulos de Node.js básicos ( path , os y fs ) que necesitaremos en esta sección, añada las siguientes líneas a la parte superior de su index.js archivo:

index.js

const Vision = require('@google-cloud/vision');
const vision = new Vision.ImageAnnotatorClient();
const {promisify} = require('util');
const exec = promisify(require('child_process').exec);

const path = require('path');
const os = require('os');
const fs = require('fs');

Dado que su función se ejecutará dentro de un entorno de Google Cloud, no es necesario configurar las bibliotecas de Cloud Storage y Cloud Vision: se configurarán automáticamente para usar su proyecto.

Detectando imágenes inapropiadas

Usted va a utilizar el functions.storage.onChange Nube funciones de disparo, que se ejecuta el código tan pronto como un archivo o carpeta se crea o modifica en un cubo de almacenamiento en la nube. Añadir el blurOffensiveImages Función en su index.js archivo:

index.js

// Checks if uploaded images are flagged as Adult or Violence and if so blurs them.
exports.blurOffensiveImages = functions.runWith({memory: '2GB'}).storage.object().onFinalize(
    async (object) => {
      const imageUri = `gs://${object.bucket}/${object.name}`;
      // Check the image content using the Cloud Vision API.
      const batchAnnotateImagesResponse = await vision.safeSearchDetection(imageUri);
      const safeSearchResult = batchAnnotateImagesResponse[0].safeSearchAnnotation;
      const Likelihood = Vision.protos.google.cloud.vision.v1.Likelihood;
      if (Likelihood[safeSearchResult.adult] >= Likelihood.LIKELY ||
          Likelihood[safeSearchResult.violence] >= Likelihood.LIKELY) {
        functions.logger.log('The image', object.name, 'has been detected as inappropriate.');
        return blurImage(object.name);
      }
      functions.logger.log('The image', object.name, 'has been detected as OK.');
    });

Tenga en cuenta que agregamos alguna configuración de la instancia de Cloud Functions que ejecutará la función. Con .runWith({memory: '2GB'}) , estamos solicitando que la instancia se pone 2 GB de memoria en lugar de la predeterminada, ya que esta función requiere mucha memoria.

Cuando se activa la función, la imagen se ejecuta a través de la API de Cloud Vision para detectar si está marcada como adulta o violenta. Si se detecta la imagen apropiada en base a estos criterios, estamos borrando la imagen, que se realiza en el blurImage funcionan como veremos a continuación.

Difuminar la imagen

Agregue el siguiente blurImage función en su index.js archivo:

index.js

// Blurs the given image located in the given bucket using ImageMagick.
async function blurImage(filePath) {
  const tempLocalFile = path.join(os.tmpdir(), path.basename(filePath));
  const messageId = filePath.split(path.sep)[1];
  const bucket = admin.storage().bucket();

  // Download file from bucket.
  await bucket.file(filePath).download({destination: tempLocalFile});
  functions.logger.log('Image has been downloaded to', tempLocalFile);
  // Blur the image using ImageMagick.
  await exec(`convert "${tempLocalFile}" -channel RGBA -blur 0x24 "${tempLocalFile}"`);
  functions.logger.log('Image has been blurred');
  // Uploading the Blurred image back into the bucket.
  await bucket.upload(tempLocalFile, {destination: filePath});
  functions.logger.log('Blurred image has been uploaded to', filePath);
  // Deleting the local file to free up disk space.
  fs.unlinkSync(tempLocalFile);
  functions.logger.log('Deleted local file.');
  // Indicate that the message has been moderated.
  await admin.firestore().collection('messages').doc(messageId).update({moderated: true});
  functions.logger.log('Marked the image as moderated in the database.');
}

En la función anterior, la imagen binaria se descarga de Cloud Storage. La imagen es borrosa y luego usando ImageMagick de convert herramienta, y la versión borrosa es re-cargado en el Cubo de almacenamiento. A continuación, borramos el archivo en la instancia de Cloud Functions para liberar algo de espacio en el disco, y lo hacemos porque la misma instancia de Cloud Functions puede volver a usarse y si los archivos no se limpian, podría quedarse sin espacio en el disco. Finalmente, agregamos un booleano al mensaje de chat que indica que la imagen fue moderada, y esto activará una actualización del mensaje en el cliente.

Implementar la función

La función solo estará activa después de que la haya implementado. En la línea de comandos, ejecute firebase deploy --only functions :

firebase deploy --only functions

Esta es la salida de la consola que debería ver:

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (X.XX KB) for uploading
✔  functions: functions folder uploaded successfully
i  starting release process (may take several minutes)...
i  functions: updating function addWelcomeMessages...
i  functions: creating function blurOffensiveImages...
✔  functions[addWelcomeMessages]: Successful update operation.
✔  functions[blurOffensiveImages]: Successful create operation.
✔  functions: all functions deployed successfully!

✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/friendlychat-1234/overview

Prueba la función

Una vez que la función se haya implementado correctamente:

  1. Abra su aplicación en su navegador usando el URL de alojamiento (en forma de https://<project-id>.firebaseapp.com ).
  2. Una vez que haya iniciado sesión en la aplicación, cargue una imagen: 4db9fdab56703e4a.png
  3. Elija su mejor imagen ofensiva para subir (o puede utilizar esta carne comer zombi !) Y después de unos momentos, debe consultar a su actualización post con una versión borrosa de la imagen: 83dd904fbaf97d2b.png

10. Notificaciones de mensajes nuevos

En esta sección, agregará una función en la nube que envía notificaciones a los participantes del chat cuando se publica un nuevo mensaje.

Usando Firebase mensajería en la nube (FCM), puede enviar notificaciones a los usuarios de forma fiable a través de plataformas. Para enviar una notificación a un usuario, necesita su token de dispositivo FCM. La aplicación web de chat que estamos usando ya recopila tokens de dispositivo de los usuarios cuando abren la aplicación por primera vez en un nuevo navegador o dispositivo. Estas fichas se almacenan en la nube Firestore en el fcmTokens colección.

Si usted desea aprender cómo conseguir tokens de dispositivo FCM en una aplicación web, se puede ir a través de la Web de experimento de código Firebase .

Enviar notificaciones

Para detectar cuando los nuevos mensajes se publican, podrás usar el functions.firestore.document().onCreate Nube funciones de disparo, que se ejecuta su código cuando se crea un nuevo objeto en una trayectoria determinada de la nube Firestore. Añadir los sendNotifications funcionan en su index.js archivo:

index.js

// Sends a notifications to all users when a new message is posted.
exports.sendNotifications = functions.firestore.document('messages/{messageId}').onCreate(
  async (snapshot) => {
    // Notification details.
    const text = snapshot.data().text;
    const payload = {
      notification: {
        title: `${snapshot.data().name} posted ${text ? 'a message' : 'an image'}`,
        body: text ? (text.length <= 100 ? text : text.substring(0, 97) + '...') : '',
        icon: snapshot.data().profilePicUrl || '/images/profile_placeholder.png',
        click_action: `https://${process.env.GCLOUD_PROJECT}.firebaseapp.com`,
      }
    };

    // Get the list of device tokens.
    const allTokens = await admin.firestore().collection('fcmTokens').get();
    const tokens = [];
    allTokens.forEach((tokenDoc) => {
      tokens.push(tokenDoc.id);
    });

    if (tokens.length > 0) {
      // Send notifications to all tokens.
      const response = await admin.messaging().sendToDevice(tokens, payload);
      await cleanupTokens(response, tokens);
      functions.logger.log('Notifications have been sent and tokens cleaned up.');
    }
  });

En la función anterior, estamos reuniendo tokens de dispositivo de todos los usuarios de la base de la nube Firestore y el envío de una notificación a cada uno de ellos utilizando el admin.messaging().sendToDevice función.

Limpiar las fichas

Por último, queremos eliminar los tokens que ya no son válidos. Esto sucede cuando el navegador o dispositivo ya no usa el token que una vez obtuvimos del usuario. Por ejemplo, esto sucede si el usuario ha revocado el permiso de notificación para la sesión del navegador. Para ello, se suman los siguientes cleanupTokens funcionan en su index.js archivo:

index.js

// Cleans up the tokens that are no longer valid.
function cleanupTokens(response, tokens) {
 // For each notification we check if there was an error.
 const tokensDelete = [];
 response.results.forEach((result, index) => {
   const error = result.error;
   if (error) {
     functions.logger.error('Failure sending notification to', tokens[index], error);
     // Cleanup the tokens that are not registered anymore.
     if (error.code === 'messaging/invalid-registration-token' ||
         error.code === 'messaging/registration-token-not-registered') {
       const deleteTask = admin.firestore().collection('fcmTokens').doc(tokens[index]).delete();
       tokensDelete.push(deleteTask);
     }
   }
 });
 return Promise.all(tokensDelete);
}

Implementar la función

La función solo estará activa después de que la haya implementado, y para implementarla, ejecute esto en la línea de comando:

firebase deploy --only functions

Esta es la salida de la consola que debería ver:

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (X.XX KB) for uploading
✔  functions: functions folder uploaded successfully
i  starting release process (may take several minutes)...
i  functions: updating function addWelcomeMessages...
i  functions: updating function blurOffensiveImages...
i  functions: creating function sendNotifications...
✔  functions[addWelcomeMessages]: Successful update operation.
✔  functions[blurOffensiveImages]: Successful updating operation.
✔  functions[sendNotifications]: Successful create operation.
✔  functions: all functions deployed successfully!

✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/friendlychat-1234/overview

Prueba la función

  1. Una vez que la función se ha implementado con éxito, abrir la aplicación en su navegador usando el URL de alojamiento (en forma de https://<project-id>.firebaseapp.com ).
  2. Si inicia sesión en la aplicación por primera vez, asegúrese de permitir las notificaciones cuando se le solicite: 8b9d0c66dc36153d.png
  3. Cierre la pestaña de la aplicación de chat o muestre una pestaña diferente: las notificaciones aparecen solo si la aplicación está en segundo plano. Si usted desea aprender cómo recibir mensajes mientras la aplicación está en primer plano, echar un vistazo a nuestra documentación .
  4. Con un navegador diferente (o una ventana de incógnito), inicie sesión en la aplicación y publique un mensaje. Debería ver una notificación mostrada por el primer navegador: 45282ab12b28b926.png

11. ¡Felicitaciones!

Usó el SDK de Firebase para Cloud Functions y agregó componentes del lado del servidor a una aplicación de chat.

Lo que hemos cubierto

  • Creación de Cloud Functions con el SDK de Firebase para Cloud Functions.
  • Active Cloud Functions según los eventos de Auth, Cloud Storage y Cloud Firestore.
  • Agrega compatibilidad con Firebase Cloud Messaging a tu aplicación web.
  • Implementa Cloud Functions con Firebase CLI.

Próximos pasos

Aprende más