Как перенаправить на страницу уведомлений, когда приложение открывается после нажатия уведомления FCM?

#react-native #firebase-cloud-messaging #react-native-android #react-navigation

#firebase-cloud-messaging #react-native #реагировать-навигация

Вопрос:

Я успешно внедрил firebase Cloud messaging в своем приложении. Но когда появляется новое уведомление, мое приложение должно открыться, а затем перенаправить на страницу уведомлений с app.js . Приложение отображает информацию о журнале при нажатии на уведомление, но когда я пытаюсь this.props.navigator.push("Notification"); использовать эту функцию, отображается ошибка undefined is not an object(evaluating this.props.navigation.push)

Я предполагаю, что это потому, что я еще не инициализировал свой stacknavigator, но я не знаю этого наверняка. Я использую react-navigation в своем приложении.

Вот функция в моем app.js это вызывается при нажатии на уведомление.

     const notificationOpen = await firebase.notifications().getInitialNotification();
    if (notificationOpen) {
      const { title, body } = notificationOpen.notification;
      console.log('getInitialNotification:');
      this.props.navigator.push("Notification");
    }
  

Кроме того, код навигации не работает даже в моей функции рендеринга в app.js поэтому я думаю, что props не инициализируется в app.js .
Кто-нибудь может помочь мне исправить это и отправить меня на страницу уведомлений?

Комментарии:

1. Приложите свой код app.js тоже в вопросе.

Ответ №1:

Учитывая, что у вас есть маршрут, вызываемый Notification в вашем навигаторе стека, а также у вас app.js есть доступ к navigation реквизиту навигатора, тогда вы можете захотеть использовать this.props.navigation.navigate('Notification') в случае, если вы используете react-navigation .

Проблема с вашим кодом заключается в следующем.props.navigation не имеет никакого метода с именем push, поэтому он наверняка выдаст неопределенную ошибку. Чтобы узнать больше о навигации, рассмотрите этот документ .

Комментарии:

1. this.props.navigation.navigate('Notification') также возвращает тот же результат. Как я могу передать свой app.js доступ к реквизиту навигатора? Я использую навигатор стека с навигатором ящика, который инициализируется в другом компоненте nacigation.

2. В такой ситуации я заставляю своих слушателей уведомлений переходить в базовый компонент, содержащий навигатор, отличный от app.js таким образом, у вас может быть ссылка навигатора, а затем вы можете использовать навигационные рассылки для перехода к определенному маршруту.