React Native – не удается получить доступ к push-уведомлению Firebase на переднем плане в Android

Я пытаюсь реализовать push-уведомления в React Native с консольным приложением Firebase, следуя этой статье:

React Native: интеграция push-уведомлений с помощью FCM

В Android я могу получать уведомления, когда приложение находится в фоновом режиме, но не могу получать на переднем плане. Использование этого метода для получения уведомлений:

async createNotificationListeners() {
  /*
   * Triggered when a particular notification has been received in foreground
   * */
  this.notificationListener = firebase
    .notifications()
    .onNotification(notification => {
      console.info("fg", notification);
      const { title, body } = notification;
      this.showAlert(title, body);
    });

  /*
   * If app is in background, listen for when a notification is clicked / tapped / opened as follows:
   * */
  this.notificationOpenedListener = firebase
    .notifications()
    .onNotificationOpened(notificationOpen => {
      console.info("bg", notificationOpen);
      const { title, body } = notificationOpen.notification;
      this.showAlert(title, body);
    });

  /*
   * If app is closed, check if it was opened by a notification being clicked / tapped / opened as follows:
   * */
  const notificationOpen = await firebase
    .notifications()
    .getInitialNotification();
  if (notificationOpen) {
    console.info("bg", notificationOpen);
    const { title, body } = notificationOpen.notification;
    this.showAlert(title, body);
  }
  /*
   * Triggered for data only payload in foreground
   * */
  this.messageListener = firebase.messaging().onMessage(message => {
    //process data message
    console.info("fg", JSON.stringify(message));
  });
}

Здесь firebase.notifications().onNotification или firebase.messaging().onMessage() вообще не запускаются.

В других решениях это связано с тем, что с Android 8 вам нужно создать канал, но я не могу найти никакой возможности создать канал при отправке уведомления от FCM составитель уведомлений.

2
0
1 578
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Абдул,

Вам нужно сделать канал уведомлений с помощью firebase на устройстве.

const channel = new firebase.notifications.Android
  .Channel('default', 'Default Channel', firebase.notifications.Android.Importance.Max)
  .setDescription('The default notification channel.')

firebase.notifications().android.createChannel(channel)

Это создаст канал, вы можете безопасно вызывать его столько раз, сколько хотите (согласно документации). Ваш прослушиватель onNotification выглядит нормально, вам просто нужно установить канал Android в приходящем уведомлении.

  notification.android.setChannelId('default')

где мне создать канал уведомлений? onNotification() по-прежнему не срабатывает, если я создаю канал в componentDidMount() базового компонента моего приложения

Abdul Rafay 23.02.2019 15:11

Это правильное место для вашего слушателя. Если прослушиватель вообще не срабатывает, я бы начал с двойной проверки вашей настройки для уведомлений и обмена сообщениями. Убедитесь, что в вашем файле манифеста есть служба, которая обрабатывает MESSAGE_EVENT.

ajthyng 23.02.2019 16:05

Другие вопросы по теме