En las Notificaciones a un usuario, según las construyamos, podemos hacer que Android las muestre siempre al usuario o que no se muestren y sea nuestra App la que tenga que crear la Notificación. Con el siguiente ejemplo puedes verlo:
<code>
'{
' "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
' "notification" : {
' "body" : "Texto de mensaje a mostrar",
' "title" : "Título de la Notificación",
' "icon" : "myicon"
' }
' "data" : {
' "campo1" : "valor1",
' "campo2" : "valor2"
' }
'}
</code>
Si dejamos todo el MAP de "notificación", el mensaje se mostrará siempre por Android, pero si no lo ponemos, tendríamos la posibilidad de crear todos los campos necesarios en el "data" para que podamos mostrar la misma Notificación pero creada desde nuestra App, al recibirla en el servicio FirebaseMessaging (la función fm_MessageArrived).
Ambos tipos de notificación entran siempre en el servicio FirebaseMessaging, pero como he comentado, en el primer caso se produce siempre notificación al usuario en la pantalla y en el segundo (quitando el MAP "notification") será nuestra App la que filtre la información y decida si se muestra Notificación al usuario y con que contenido. Esto además permite que podamos incluso mejorar mucho la notificación como algunas de las que vemos en otras Apps.
Yo lo utilizo así para poder enviar información de configuración (por ejemplo cambiar los datos de acceso a un servidor de FTP) y solo mostrar notificaciones al usuario cuando llevan información relevante (alertas de consumo, mensajes de la empresa, etc...).
Un saludo.