как удалить прослушиватель firebase.notifications().onNotificationOpened?

Я работаю над собственным проектом и использую библиотеку react-native-firebase. Настройка прослушивателя работает, но я не могу найти способ удалить прослушиватель.

Я настраиваю этот прослушиватель на домашней странице, поэтому всякий раз, когда пользователь переходит на домашнюю страницу. Слушатель регистрируется несколько раз и в результате действует несколько раз.

Я хочу уничтожить этот слушатель, а затем снова запустить новый.

firebase.notifications().onNotificationOpened((notificationOpen) => {
        if (notificationOpen) {
          const notification: Notification = notificationOpen.notification;
          if(notification.data.type){
          }
        }
      });

Если кто-то может помочь, это будет оценено ...


person Aditya Batra    schedule 30.08.2018    source источник


Ответы (1)


Вам нужно вызвать прослушиватель снова, чтобы удалить его, как указано в документы.

componentDidMount() {
    this.notificationOpenedListener = firebase.notifications().onNotificationOpened((notificationOpen) => {
          //... Your Stuff
   }
}

componentWillUnmount() {
    this.notificationOpenedListener();
}
person Pritish Vaidya    schedule 30.08.2018
comment
Я не хочу, чтобы он удалялся при размонтировании, но я хочу удалить его при выходе из системы. Когда пользователь выйдет из системы, он разрушится... У нас есть какой-нибудь способ? - person Aditya Batra; 31.08.2018
comment
this.notificationOpenedListener = firebase.notifications().onNotificationOpened((notificationOpen) => { if (notificationOpen) { const notification: Notification = notificationOpen.notification; if(notification.data.type){ firebase.notifications().removeAllDeliveredNotifications() } } }); console.log('notificationOpenedListener', this.notificationOpenedListener()); this.notificationOpenedListener() -›› это не определено - person Aditya Batra; 04.09.2018
comment
Это связано с тем, что консоль выполняется быстрее до инициализации функции. - person Pritish Vaidya; 05.09.2018
comment
Я пробовал то же самое, но это не работает. Он зарегистрирован несколько раз, поэтому все остальные действия также вызываются несколько раз. - person Parul Garg; 08.05.2020