Artículo
· 9 ago, 2024 Lectura de 8 min

Usando Firebase Cloud Messaging con IrisFirebase FCM

IrisFirebase - FCM
 

 

Hola, Comunidad!

Después de lanzar mi aplicación en el OpenExchange (IrisFirebase con la funcionalidad para usar Real Time Database de Firebase), descubrí que habían otras herramientas de Firebase que podría usar. Revisando las posibilidades que ofrece Firebase me decidí a añadir una nueva funcionalidad a IrisFirebase FCM!! (Firebase Cloud Messaging).

¿Que? ¿No sabes que es Firebase Cloud Messaging? No te preocupes! Porque te lo voy a explicar justo ahora.

 

Firebase Cloud Messaging. “La Explicación”:

Firebase Cloud Messaging (FCM) es un servicio proporcionado por Google. Este permite a los desarrolladores enviar notificaciones y mensajes a usuarios de smartphones, tablets o ordenadores.

Tenemos un dicho aquí en España: "Una imagen vale mas que mil palabras". Así que, aquí tienes un ejemplo para que le eches un vistazo:

 



 

 

Como puedes comprobar en las capturas de pantalla, puedes enviar mensajes con un título personalizado, cuerpo del mensaje y una imagen. Además, hay otra fascinante posibilidad que te contaré.

Si, lo sé, sé lo que estás pensando... "He, esto suena genial, pero también suena muy caro, especialmente para una persona tan tacaña como yo". Pero esa es la mejor parte!. Es totalmente gratis!!. Compruébalo por ti mismo:

https://firebase.google.com/products/cloud-messaging


 


¿Estás interesado en conocer como podrías enviar mensajes a tus apps, páginas webs, etc..? Estás de enhorabuena!! Porque voy a explicarte como puedes hacerlo de una manera muy sencilla. Coge tus sobres y sellos digitales porque vamos a "enviar" un montón de  "cartas". Vamos!.

Preparando nuestro entorno:

Si ya habías seguido mi post anterior de como usar IrisFirebase, tenders una App funcionando actualmente con IrisFireabse. En caso de que no lo hayas leído, por favor sigue los pasos 1, 2, 4, 5 y 6 del siguiente artículo:

https://es.community.intersystems.com/post/modulo-para-firebase-desatando-el-poder-de-firebase-realtime-database-con-intersystems-iris

Ok, si has seguido los pasos correctamente, ahora tendrás una instancia corriendo de IrisFirebase, así que continuemos.

 

 

Primer paso: configurar tu app para usar FCM:

Para poder enviar mensajes, debes configurar FCM en el proyecto de tu App primero.

Entra en tu Firebase console y selecciona tu proyecto (en mi caso, IrisFirebaseExample):


 

Ahora, presiona sobre Todos los productos:


 

Busca el apartado de “Cloud Messaging”:


 

Ahora, debes añadir una o mas aplicaciones dependiendo de la plataforma sobre la que estés desarrollando tu aplicación (Puedes seleccionar varias). (En mi caso, he optado por Android):

(Si estás planeando enviar mensajes a iOS, debes ser propietario de una cuenta de pago del programa de desarrolladores de Apple porque necesitarás generar un certificado).


 

Rellena los campos requeridos con la información de tu App/web (el campo SHA-1 es opcional):

 

Después de unos segundos, aparecerá una pantalla ofreciéndote la posibilidad de descargar el fichero de configuración. Presiona sobre “Descargar google-service.json” y guárdalo en un lugar seguro porque vas a necesitarlo mas adelante. (Deberás copiarlo en la carpeta raíz del proyecto de tu app mas adelante). Después de guardar el fichero, presiona el botón Siguiente.


 

El siguiente Paso explica como añadir el SDK de Firebase a tu app.


 

Las instrucciones de este Paso varian en función de si estás creando una app con Kotlin, Groovy, Flutter, etc., así que revisa bien como hacerlo. En mi caso, he usado Flutter y la forma mas sencilla de hacerlo es instalando el CLI de Firebase:

https://firebase.google.com/docs/android/setup

No voy a explicar esos pasos porque quedan fuera del alcance de este tutorial. De cualquier modo siéntete libre de preguntar cualquier duda en los comentarios.

Continuemos apretando el botón "Siguiente".

En este punto, ya habremos terminado la configuración del lado de la Consola de Firebase. Felicidades, has pasado la parte aburrida!!.


 

 

Segundo Paso: Configurar IrisFirebase.FCM:

Si ya tenías la app configurada previamente con IrisFirebase Realtime Database, puedes reutilizar la configuración para FCM. En caso contrario, puedes configurar tu App ejecutando el metodo ConfigApp de la clase Firebase.Helper.cls. Encontrarás un ejemplo de como usarlo en Test.TestFCM.cls:

ClassMethod init()
{
  Do ##class(Firebase.Helper).ConfigApp("appNotas",””,"irisfirebaseexample.json")
}

Recuerda usar tus propios parámetros de tu App (el segundo parámetro URL es solo obligatorio para RealTime Database; no se utiliza en FCM, por lo tanto puedes omitirlo o mandarlo vacío.

Genial! Ahora ya tenemos el sistema configurado: nuestra instancia de IrisFirebase con FCM y nuestra App o Web con el SDK de Firebase.

Es hora de empezar a enviar mensajes!!

 

Tercer Paso: enviando mensajes a un único dispositivo:

Para enviar mensajes a un dispositivo en particular, debes conocer el token ID de la app a la que quieres mandar la notificación.

Puedes obtener este token ID de la app/web que estas usando. Abajo te dejo un ejemplo de como obtener el token ID de una instancia de una app instalada en Android mediante código con Flutter:


 

Con este código obtendrás el "token". El token ID será algo similar a esto:

fErQlmmjTsq2E2-p7RN6zD:APA91bFhdeCGit17QSIXrlbfovr59BgviGIDHI0nnp7t9i_YFKAPSACkTvP_iKOV-b3Xaj73uhl7Z0S41vfmH_YVV8Ep9Evad69-s1Hkt9pu3VrkeZQGTc8vAJgKSY1qkhuP7HU6t7UJ

 

Dependiendo de para que uses la app, podría ser posible que prefirieses almacenar estos token ID en Iris con un ID que identifique a tu cliente. Para hacer esto, puedes usar el meted SaveToken. Aquí te dejo un ejemplo de como hacerlo en la clase Test.TestFCM.cls.

ClassMethod TestSaveToken()
{
  Set token = "fErQlmmjTsq2E2-p7RN6zD:APA91bFhdeCGit17QSIXrlbfovr59BgviGIDHI0nnp7t9i_YFKAPSACkTvP_iKOV-b3Xaj73uhl7Z0S41vfmH_YVV8Ep9Evad69-s1Hkt9pu3VrkeZQGTc8vAJgKSY1qkhuP7HU6t7HJ"
  Set appName = "appNotas"
  Set id = 123456
  Do ##class(Firebase.FCM).SaveToken(appName, token, id)
}

 

ID en este caso podría ser el identificador de tu cliente o cualquier ID que te pueda ayudar en el futuro a identificar a tu cliente.

Bien, ahora ya estamos completamente listos para enviar un mensaje. Para hacerlo, puede usar uno de estos modos:

Primer modo: enviar un mensaje directamente a un token (Send Method), Aquí tienes un ejemplo de uso:

ClassMethod TestSendMessage()
{
 Set appName = "appNotas"
 Set title = "IrisFirebase FCM"
 Set body = "Now you can send messages from Iris using IrisFirebase!!!"
 Set image = "https://openexchange.intersystems.com/mp/img/packages/3553/vaeo3isvwgubxb2ya7vb0c9edgs.jpeg"
 Set token = "fErQlmmjTsq2E2-p7RN6zD:APA91bFhdeCGit17QSIXrlbfovr59BgviGIDHI0nnp7t9i_YFKAPSACkTvP_iKOV-b3Xaj73uhl7Z0S41vfmH_YVV8Ep9Evad69-s1Hkt9pu3VrkeZQGTc8vAJgKSY1qkhuP7HU6t7HJ"
 Set data = {}
 Set data.param1 = "param1 value"
 Set data.param2 = "param2 value"
 Set result = ##class(Firebase.FCM).Send(appName, token, title, body, image, data)
 If (result = 1)
 {
  U 0 W "Message sended OK"
 }Else{
  U 0 W "Error sending message"
 }

}

 

Como puedes comprobar, para enviar un mensaje necesitarás estos datos:

AppName: Es el nombre de la app que has escrito en el método ConfigApp.

Los valores de Title, Body y Image los explico en la siguiente captura:



 

Token: Es el token ID que has obtenido de la App.

Data: Esta es una función realmente interesante (data es un diccionario JSON de pares clave valor donde puedes enviar información oculta personalizada al dispositivo). Quizás estes interesado en enviar a tu cliente detalles de su próxima cita, en ese caso podrías usar esta estructura para enviar información que podría ser visualizada dentro de tu aplicación o cualquier otra cosa que desees.

 

Segundo modo: enviar un mensaje a un ID de cliente o de lo que sea:

En este caso, puedes usar el meted SendMessageToId. A continuación de dejo un ejemplo de uso:

ClassMethod TestSendMessageToId()
{
 Set appName = "appNotas"
 Set id = 123456
 Set title = "título"
 Set body = "Cuerpo Mensaje"
 Set image = "https://openexchange.intersystems.com/mp/img/packages/3553/vaeo3isvwgubxb2ya7vb0c9edgs.jpeg"
 Set token = "fErQlmmjTsq2E2-p7RN6zD:APA91bFhdeCGit17QSIXrlbfovr59BgviGIDHI0nnp7t9i_YFKAPSACkTvP_iKOV-b3Xaj73uhl7Z0S41vfmH_YVV8Ep9Evad69-s1Hkt9pu3VrkeZQGTc8vAJgKSY1qkhuP7HU6t7FD"
 Set data = {}
 Set data.param1 = "param1 value"
 Set data.param2 = "param2 value"
 Set result = ##class(Firebase.FCM).SendMessageToId(appName, id, title, body, image, data)


 If (result = 1)
 {
  U 0 W "Message sended OK"
 }Else{
  U 0 W "Error sending message"
 }
}

 

Como puedes ver, la diferencia entre el meted anterior y este es que en este caso debes conocer el ID al que quieres enviar el mensaje en lugar del token ID.

El resto de parámetros son iguales.

 

 

Último Paso: enviando el mismo mensaje a todas las instancias de tu App/Web:

Para este propósito, puedes usar la herramienta nativa que nos ofrece Firebase para enviar campañas.

Ve a la Consola de Firebase, entra en tu proyecto, y presiona el botón "Messaging":


 

En esta pantalla, podrá crear una nueva campaña pulsando el botón "Campaña Nueva" y a continuación en "Notificaciones":


 

Aparecerá una explicación detallada de los pasos que debes seguir para enviar el mismo mensaje a todas las instancias de tu app.


 

Si lo deseas, puedes aplicar algunos filtros durante el proceso:


 

Serás capaz de programar tu campaña para enviarla inmediatamente o programarla:


 

También te dará opción para activar analíticas (si quieres):


 

También te permitirá definir el comportamiento de la notificación:

Cuando estés listo, presiona el botón Revisar y Publicar.

Tu nueva campaña aparecerá en la sección Messagin.

Si has seleccionado en El Paso anterior la opción de enviar ahora, en unos pocos segundos recibirás la notificación en tu app:


 

En Firebase, alardean de ser capaces de enviar millones de mensajes en segundos. Así que si estás planeando enviar el mismo mensaje a todos tus clientes, te recomiendo enviar una campaña desde la consola de Firebase. Si en caso contrario necesitas enviar un mensaje únicamente a un grupo de clientes o con un mensaje personalizado para cada envío, enviar los mensajes por IrisFirebase es la mejor opción!.
 

Haz click en el siguiente enlace para encontrar la versión actualizada de IrisFirebase con FCM en el OpenExchange:

https://openexchange.intersystems.com/package/irisfirebas

 

Para echarle un vistazo al código de la app en Flutter que he usado para este tutorial, entra en el siguiente link:

https://github.com/daniel-aguilar-garcia/push_app_flutter_example

 

Eso es todo por el momento. Espero que hayas encontrado interesante esta nueva funcionalidad y que la uses un montón!

Por favor, hazme saber en los comentario que piensas acerca de esta nueva funcionalidad. Hazme saber también si te interesaría que añadiese alguna nueva funcionalidad a IrisFirebase.

Gracias por leerme!.

Comentarios (2)2
Inicie sesión o regístrese para continuar