Spanish Envia Notificacion a un solo usuario con Firebase

Juan Antonio Palacios

Member
Licensed User
Hola estoy haciendo una app, y necesito enviar una notificación a un solo usuario determinado.
Consigo utilizando Firebase enviar a todos mis usuarios.
La pregunta es utilizando B4A solo sin mezclar con B4j.
Si me podéis ayudar os lo agradezco.
 

Juan Antonio Palacios

Member
Licensed User
Bueno después de pegarme un poco con ello, lo he conseguido. El problema era la clave del Firebase, yo ponía la que he visto en los tutoriales en ingles clave de API de la web, pero a mi me ha funcionado poniendo la Clave de servidor que aparece en la pestaña de mensajeria en la nube. (Ademas te aconseja que utilices esa)
upload_2017-3-12_11-41-33.png


Tal y como muestro en la imagen.
Eso si he en mi base de datos he metido los token de los usuarios.

Lo cuento por si le puede ayudar a alguien
 

Carlos marin

Active Member
Licensed User
Longtime User
Estimado la verdad no me e metido aun con Firebase, yo utilizo un server normal y cada cliente que creo se le genera un id, asi cuando mando un mensaje solo digo que lo lea dicho ID, mi pregunta también seria que ventajas tiene a diferencia de un server directo. gracias
 

desof

Well-Known Member
Licensed User
Longtime User
Bueno después de pegarme un poco con ello, lo he conseguido. El problema era la clave del Firebase, yo ponía la que he visto en los tutoriales en ingles clave de API de la web, pero a mi me ha funcionado poniendo la Clave de servidor que aparece en la pestaña de mensajeria en la nube. (Ademas te aconseja que utilices esa)
View attachment 53702

Tal y como muestro en la imagen.
Eso si he en mi base de datos he metido los token de los usuarios.

Lo cuento por si le puede ayudar a alguien

Y de obtienes el Token de cada usuario ?
y como ?
 

Carlos marin

Active Member
Licensed User
Longtime User
hola todo lo hago por medio de la bd.
ejemplo

al registrarse un usuario en la plataforma este genera un id. que lo guardo en una bd local (sqlite) del celu
y con un servicio consulto si hay correo para este id. pongo un suiche por ejemplo que se llame leido = no

el servicio entra al servidor y preugnta si el id que tieene registrado tiene mensajes nuevos con la condicion de que leidos = no
si encuentra uno lo descargo a la bd local (sqlite). y actualizo el suiche leido = si. para k no vuelva a bajar el mismo mensaje. e igual me notifica a mi persona que el mensaje ya fue bajado. que tal?
 

Seneca

Active Member
Licensed User
hola todo lo hago por medio de la bd.
ejemplo

al registrarse un usuario en la plataforma este genera un id. que lo guardo en una bd local (sqlite) del celu
y con un servicio consulto si hay correo para este id. pongo un suiche por ejemplo que se llame leido = no

el servicio entra al servidor y preugnta si el id que tieene registrado tiene mensajes nuevos con la condicion de que leidos = no
si encuentra uno lo descargo a la bd local (sqlite). y actualizo el suiche leido = si. para k no vuelva a bajar el mismo mensaje. e igual me notifica a mi persona que el mensaje ya fue bajado. que tal?

Hola.

Entonces, en este proceso ya no utilizas Firebase Notificatión, ¿no?

Saludos.
 

Carlos marin

Active Member
Licensed User
Longtime User
Hola Seneca si exacto, pero por eso quería saber que diferencia hay en utilizar firebase y un server comun con mysql. saludos
 

Seneca

Active Member
Licensed User
Firebase Notificaciones también permite enviar mensajería a un solo usuario, o a varios, sin tener que enviarlos a todos. No podría explicarte cómo se hace porque aún no he indagado esta posibilidad. Por lo que he leído, creo recordar que es a través de los tokens que se le asignan a cada usuario que se registran en un determinado tema de Firebase Notificaciones. Pero es necesario que tú te encargues de recopilar esos tokens, en una BD por ejemplo, para que puedas conocer el token adecuado al que has de enviar el mensaje con FB.

Saludos.
 

desof

Well-Known Member
Licensed User
Longtime User
Hola, mi pregunta mas arriba preguntaba como obtener el token de firebase como muestro en captura coloco el que da cuando se registra pero ese no es parece por que no me funciona

KVgVjamY4.png
 

Seneca

Active Member
Licensed User
Para que un usuario pueda recibir mensajes a través de FCM ha de registrarse en uno o varios Temas (Topics). Al hacer ese registro se puede obtener el Token que se le asigna, el cual puede usarse luego para enviar mensajes solo a este usuario.

B4X:
Public Sub SubscribeToTopics
   fm.SubscribeToTopic("general") 'you can subscribe to more topics
   Log (fm.Token) '<------------------------- 
End Sub
 

desof

Well-Known Member
Licensed User
Longtime User
Para que un usuario pueda recibir mensajes a través de FCM ha de registrarse en uno o varios Temas (Topics). Al hacer ese registro se puede obtener el Token que se le asigna, el cual puede usarse luego para enviar mensajes solo a este usuario.

B4X:
Public Sub SubscribeToTopics
   fm.SubscribeToTopic("general") 'you can subscribe to more topics
   Log (fm.Token) '<-------------------------
End Sub
Disculpa pero no entiendo ...y esos Tópicos donde los creo? en la consola de Firebase
 

Seneca

Active Member
Licensed User
Hola.

Desoft, en tu primer mensaje comentabas que habías conseguido enviar mensajes con Firebase a todos tus usuarios. Si es así, en alguna parte del código de la app debes tener algo similar a esto:

B4X:
   fm.SubscribeToTopic("general")

Con esa línea es con la que un usuario se subscribe a un Topic (Tema), que en este caso concreto es el Topic "general". Estos topics no hay que crearlos previamente, sino que se crean de manera automática cuando un usuario lo invoca para subscribirse.

Una vez realizas la subscripción, con fm.Token obtienes el Token que se le ha asignado a ese usuario al subscribirse al tema, de manera que puedas almacenarlo para usarlo posteriormente. El tener distintos Topics sirve para tener a los usuarios clasificados, de forma que puedas enviar mensajes a todos los usuarios de un determinado Topic, sin tener que indicar el Token de cada uno de ellos.

Saludos.
 

desof

Well-Known Member
Licensed User
Longtime User
NO me funciona por que de hecho en mi app B4A no tengo nada desarrollado para recibir notificaciones por que lo unico que hago es enviarla desde la consola de Firebase y solo llegan al dispositivo sin poner nada de codigo en mi app.!
Esto está bien ? o deberia colocar algo de codigo para interceptarla y ahi obtener el Token del usuario y enviarmelo a un BASE de DAtos x ejemplo en Firebase ?
Gracias
 

Seneca

Active Member
Licensed User
NO me funciona por que de hecho en mi app B4A no tengo nada desarrollado para recibir notificaciones por que lo unico que hago es enviarla desde la consola de Firebase y solo llegan al dispositivo sin poner nada de codigo en mi app.!

Hola.

¿En tu app consigues actualmente recibir las notificaciones que envías desde la consola de Firebase? Es que si eso es así, aún con mis limitados conocimientos de B4A, dudo mucho que puedas recibir en tu app dichas notificaciones enviadas desde la consola de Firebase sin haber implementado nada de código que gestione su recepción.

Si realmente estás recibiendo dichas notificaciones, se me ocurre que vayas al Administrador de Bibliotecas en el editor B4A y compruebes si tienes activada la librería FirebaseNotifications, que es necesaria para recibirlas. Si la tienes activada, desactívala y la ventana Logs te debe mostrar ahora una serie de errores, apuntando a aquellas líneas de código relacionadas con las notificaciones Firebase.

Prueba y comentas.

Saludos.
 
Top