Уведомления - Очистить все уведомления в панели уведомлений Android - PullRequest
3 голосов
/ 15 мая 2019

Я отправляю несколько уведомлений в свое приложение. Чего я хочу добиться, так это то, что когда пользователь нажимает одно уведомление, все уведомления в области уведомлений исчезают.

Я пытался добавить

notification.android.setAutoCancel(true)

, который делает трюк только для одного уведомления (которое нажимается)

Я также пробовал:

firebase.notifications().removeAllDeliveredNotifications() 

, который не имеет никакого эффекта.

Как мне этого добиться?

Вот мой полный код:

      componentDidMount() {
    firebase.notifications().removeAllDeliveredNotifications()

    this.notificationDisplayedListener = firebase.notifications().onNotificationDisplayed((notification) => {
    });

    this.notificationListener = firebase.notifications().onNotification(async (notification) => {
      // Process your notification as required
      notification.android.setAutoCancel(true)
      firebase.notifications().removeAllDeliveredNotifications()
  }



    async componentWillMount() {
    this.notificationDisplayedListener = firebase.notifications().onNotificationDisplayed((notification) => {
    });
    this.notificationListener = firebase.notifications().onNotification((notification) => {
    });

    this.notificationDisplayedListener();
    this.notificationListener();
    }

1 Ответ

3 голосов
/ 09 июня 2019

Попробуйте переместить код для удаления уведомлений (removeAllDeliveredNotifications()) от onNotification слушателя до onNotificationOpened слушателя. При попытке удалить уведомления по прибытии вы можете столкнуться с условиями гонки.

Также потому, что вы хотите очистить уведомления, когда пользователь нажимает на одно уведомление.

PS. Держите слушателей уведомлений либо в componentDidMount, либо в componentWillMount, но не в обоих.

...