android firebase android-notifications

android - Notificaciones push sobre cambio de contenido



firebase android-notifications (1)

Digamos que tengo una aplicación de Android que simplemente crea un ListView con contenido obtenido de una API REST aleatoria.

Imagine ahora que necesito enviar notificaciones push cuando haya nuevo contenido disponible en la API. ¿Cuál es la forma más sencilla de hacer esto?

Estoy un poco confundido con el proceso de notificaciones push en Android. Eché un vistazo a Firebase, pero no sé si necesito obligatoriamente una base de datos en Firebase que almacene el resultado ya que el nuevo contenido está disponible a través de la API, y luego activa una notificación en la actualización de la base de datos, o si no necesita una base de datos, etc.

Como puede ver, no está claro para mí, por lo que cualquier ayuda es muy apreciada. Gracias !


La mejor manera de lograr esto es usar Firebase Cloud Functions . Esto lo ayudará a notificar a los usuarios cuando ocurra algo interesante, en su caso, cuando haya nuevo contenido disponible. Puede usar Cloud Firestore o Firebase Realtime Database para lograr esto. Le explicaré en mi respuesta cómo se puede hacer usando el nuevo Cloud Firestore . Para eso le recomiendo que implemente también la autenticación Firebase . Esto lo ayudará a enviar notificaciones a un usuario en particular o a un grupo de usuarios cuando ocurra algo nuevo.

Para lograr esto, considere seguir los pasos a continuación.

  1. Implemente la Firebase Authentication . Tan pronto como se implemente, cree una colección de usuarios en la que cada usuario será un documento dentro de la colección de usuarios. La estructura de su base de datos debería verse así:

    Firebase-root | --- users (collection) | --- uid1 (document) | | | --- //user properties | --- uid2 (document) | --- //user properties

    Además de los detalles del usuario, debe agregar a cada usuario un tokenId . Puede obtenerlo simplemente usando la siguiente línea de código:

    String tokenId = FirebaseInstanceId.getInstance().getToken();

    Un documento de usuario debería verse así:

    uid1 | --- userName: "John" | --- userEmail: [email protected] | --- tokenId: "e_wLukMfq..." //very long token | --- //other details

  2. Ahora, agregue una nueva coolección al documento del usuario llamado notifications , en el que debe agregar la notification que necesita enviar y el sender , cada vez que ocurra algo nuevo. Debería verse más o menos así:

    uid1 | --- userName: "John" | --- userEmail: [email protected] | --- tokenId: "e_wLukMfq..." //very long token | --- notifications (collection) | | | --- notificationId1 | | | --- notificationMessage: "My Notification" | | | --- fromUser: "My Notification" | --- //other details

  3. Ahora necesita usar Node.js para escribir una función en Cloud Functions que escuche cada nueva notificación que aparezca dentro de esta referencia:

    "users/{uid}/notifications/{notificationId}"

    Una vez que aparece una nueva notificación, puede usar la función sendToDevice y el tokenId para enviar la notificación a un usuario específico. La notificación será manejada por el sistema Android y se mostrará al usuario. Tenga en cuenta que esto solo funcionará cuando la aplicación esté en el backgroud . También puede recibir notificaciones cuando la aplicación está en foreground mediante la implementación de FirebaseMessagingService .