es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Azure NotificationHub Android: onPushNotificationReceived no se llama cuando la aplicación de Android está en un estado de fondo/terminado.

Cuando la aplicación de Android está en estado de primer plano, se invoca el listener onPushNotificationReceived con los datos de la notificación. Cuando está en estado de segundo plano o terminado, se recibe la notificación pero el listener onPushNotificationReceived no se invoca automáticamente ni cuando toco la notificación. Estoy enviando las notificaciones desde Azure Portal.

{
  "notification":{
    "title":"Notification Hub Test Notification",
    "body":"Esta es una notificación de ejemplo enviada por Azure Notification Hubs."
  },
  "data":{
    "property1":"valor1",
    "property2":53
  },
  "priority":"high"
}

Estoy siguiendo el tutorial: Enviar notificaciones push a dispositivos Android con Firebase SDK versión 1.0.0-preview1 (SDK actual) tutorial.
https://learn.microsoft.com/en-us/azure/notification-hubs/android-sdk

Android OS: 11

¿Hay algo más que necesite hacer aparte de los pasos mencionados en el enlace anterior?

NotificationListener

AndroidManifest

MainActivity

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución:

    Cuando la aplicación de Android está en estado Foreground, el oyente onPushNotificationReceived se invoca automáticamente con los datos de la notificación. Sin embargo, cuando la aplicación está en un estado de fondo o terminado, la notificación se recibe pero el oyente onPushNotificationReceived no se invoca automáticamente ni cuando se toca la notificación.

    Para resolver este problema, debemos usar Firebase Cloud Messaging (FCM) en lugar de Azure Notification Hubs. FCM proporciona una forma más confiable y eficiente de enviar notificaciones push a dispositivos Android.

    Para integrar FCM en una aplicación de Android, siga los pasos indicados en la sección “Firebase Cloud Messaging” del tutorial mencionado en la pregunta.

    Además, asegúrese de agregar el siguiente código al archivo de manifiesto de su aplicación, dentro de la etiqueta <application>:

    <service android:name=".MyFirebaseMessagingService">
      <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"></action>
      </intent-filter>
    </service>
    

    Este código registra la clase MyFirebaseMessagingService para recibir mensajes de FCM.

    Además, asegúrese de que el SDK de Firebase esté configurado correctamente en su aplicación.

    Una vez que se haya completado la integración, puede usar el siguiente código para recibir notificaciones push e invocar un método personalizado cuando se hace clic en la notificación:

    public class MyFirebaseMessagingService extends FirebaseMessagingService {
    
      @Override public void onMessageReceived(RemoteMessage remoteMessage) {
        // Manejar el mensaje aquí
      }
    
      @Override public void onNewToken(@NonNull String token) {
        // Manejar el token aquí
      }
    
      @Override public void onDeletedMessages() {
        // Manejar mensajes eliminados
      }
    
      @Override public void onMessageSent(@NonNull String s) {
        // Manejar mensaje enviado
      }
    
      @Override public void onSendError(@NonNull String s, @NonNull Exception e) {
        // Manejar error de envío
      }
    
      @Override public void onTaskRemoved(Intent rootIntent) {
        // Manejar eliminación de tarea
      }
    
      @Override public void onNotificationOpened(@NonNull Context context, @NonNull RemoteMessage remoteMessage) {
        // Manejar clic en la notificación
      }
    }
    

    El método onNotificationOpened se invoca cuando se hace clic en la notificación.

    Espero que esto ayude a resolver el problema.

Comments are closed.