Spanish capturar Notificacion en un label

piramide

Member
Licensed User
Longtime User
buenas tardes, para introducirlos en tema les comento que estoy intentado aprender a trabajar con Firebase Notification y la idea es desde un programa B4J enviar un mensaje a android, hasta ahi todo bien ya que hay excelentes ejemplos, el punto es que me gustaria capturar esa notificacion y ubicarla en un label del activity principal, asi cuando se la recibe puedo reactivar el programa y mostrarla en mi pantalla.

La segunda consulta (para cuando solucione la primera) es si se puede responder desde el android a las notificaciones o que otra cosa habría que implementar, espero se entienda. Gracias
 

josejad

Expert
Licensed User
Longtime User
Hola piramide:

Si no me equivoco, podrías hacer algo como:
B4X:
Sub fm_MessageArrived (Message As RemoteMessage)
   Log("Message arrived")
   Log($"Message data: ${Message.GetData}"$)
   Dim n As Notification
   n.Initialize
   n.Icon = "icon"
   n.SetInfo(Message.GetData.Get("title"), Message.GetData.Get("body"), Main)
   n.Notify(1)

   TuLabel.text = Message.GetData.Get("body")  '<---------- aquí puedes asignar el texto del mensaje que te ha llegado a un label

End Sub

Ya lo de contestar, me temo (que alguien me corrija si me equivoco), que no puedes contestar a través de FCM.
¿Qué tipo de respuesta quieres dar? Se me ocurre que quizás pudieses utilizar mqtt.

saludos,
 

piramide

Member
Licensed User
Longtime User
Gracias por responder José, esto que me indicas (TuLabel.text = Message.GetData.Get("body") es lo que estoy haciendo, pero solo esto no me actualiza el label que tengo abierto en el activity principal, o mejor aún, si estuviera en segundo plano la aplicación que me la abra y muestre el texto. espero se comprenda.

Respecto a la respuesta es solo un 0 o 1 o algo que desde la otra aplicación pueda capturar e interpretar como si o no.

saludos
 

josejad

Expert
Licensed User
Longtime User
Hola piramide:

Prueba así, en tu activity, crea una sub:
B4X:
Sub setlabel(msg As String)
    TuLabel.Text = msg
End Sub

Y en tu servicio
B4X:
Sub fm_MessageArrived (Message As RemoteMessage)
    Log("Message arrived")
    Log($"Message data: ${Message.GetData}"$)
    CallSubDelayed2(Main,"setlabel",Message.GetData.Get("body"))
End Sub

Respecto a la respuesta es solo un 0 o 1 o algo que desde la otra aplicación pueda capturar e interpretar como si o no

¿La otra aplicación, cual es? ¿También hecha con B4A?
 

piramide

Member
Licensed User
Longtime User
Hola José

Voy a probar lo que me sugeris

¿La otra aplicación, cual es? ¿También hecha con B4A?
No, es el ejemplo hecho en b4j.
 

josejad

Expert
Licensed User
Longtime User
No, es el ejemplo hecho en b4j.
Con FCM no puedes contestar a las notificaciones que te llegan. Si quieres comunicar entre las dos aplicaciones, prueba por ejemplo mqtt.

 
Top