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:
-
solo pasa
show_in_foreground
en tusdata
propiedad en notificación remota -
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.