Saltar al contenido

La notificación push no se muestra en primer plano de Android

Haz todo lo posible por entender el código de forma correcta previamente a usarlo a tu proyecto si tdeseas aportar algo puedes decirlo en los comentarios.

Solución:

Según el Github oficial de react-native-fcm, esta biblioteca está depreciada. Puede usar react-native-firebase para generar notificaciones. Pude hacer que las notificaciones funcionaran en aproximadamente 2 horas para Android. Si quieres el código te lo comparto. buena suerte.

Actualización: lo siento, no pude responder antes debido a mi cuenta de oficina.

Este es mi código para mostrar notificaciones en primer plano de Android.

firebase.messaging()
        .subscribeToTopic(this.state.user.user_name)
        .then(response => console.log('response from FCM TOPIC' + response))
        .catch(error =>  console.log('error from FCM TOPIC'+ error));

        this.notificationListener = firebase.notifications().onNotification(notification => 
            let notificationMessage = notification._android._notification._data.action;
            let recordId = notification._android._notification._data.recordID;

            let  title, body  = notification;
            //  console.log('ttttt', notification)
            // notification.android.setAutoCancel(false)
            console.log(title, body, notificationMessage, recordId);


            const channelId = new firebase.notifications.Android.Channel(
                'Default',
                'Default',
                firebase.notifications.Android.Importance.High
            );
            firebase.notifications().android.createChannel(channelId);

            let notification_to_be_displayed = new firebase.notifications.Notification(
                data: notification._android._notification._data,
                sound: 'default',
                show_in_foreground: true,
                title: notification.title,
                body: notification.body,
            );

            if (Platform.OS == 'android') 
                notification_to_be_displayed.android
                    .setPriority(firebase.notifications.Android.Priority.High)
                    .android.setChannelId('Default')
                    .android.setVibrate(1000);
            
            console.log('FOREGROUND NOTIFICATION LISTENER: n', notification_to_be_displayed);

            firebase.notifications().displayNotification(notification_to_be_displayed);
        );

Según los problemas de la biblioteca enumerados aquí, puede probar dos cosas:

  1. solo pasa show_in_foreground en tus data propiedad en notificación remota

  2. Android muestra una notificación solo cuando el estado de la aplicación se cancela o está en segundo plano. Para mostrar notificaciones en primer plano de la aplicación, debe mostrar local notification.

Código de muestra:

FCM.on(FCMEvent.Notification, notif => 
    if (!notif.opened_from_tray) 
        showLocalNotification();
    
);

showLocalNotification() 
    FCM.presentLocalNotification(
      id: new Date().valueOf().toString(),         // (optional for instant notification)
      title: "Test Notification with action",      // as FCM payload
      body: "Force touch to reply",                // as FCM payload (required)
      show_in_foreground: true                     // notification when app is in foreground (local & remote)
    );
  

El código completo está aquí

¿En qué nivel de API está probando? Android API 26 y superior requiere que se creen canales para recibir notificaciones en primer plano. Por favor lea esto para más información.

react-native-fcm también se actualiza para incluir canales también, refiérase a esto, aunque la biblioteca ya no debe usarse ya que la biblioteca ya no se mantiene, una buena alternativa es react-native-firebase.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *