Firebase Cloud Messaging Notification - сообщение получено многократно - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь перехватить уведомление на переднем плане с помощью native native, используя response-native-firebase.

Если приложение работает в фоновом режиме, уведомление отображается только один раз, как и должно ( очевидно, потому что это не обрабатывается в приложении). Но когда приложение находится на переднем плане, функция обратного вызова для перехвата уведомления запускается несколько раз, совершенно случайным образом. Если я обновляю sh приложение и затем отправляю снова, обычно это число увеличивается в геометрической прогрессии и может достигать 12 и более раз.

Мой очень простой код:

import React, { Component } from 'react';
import {
  View,
  Text,
} from 'react-native';


import messaging from '@react-native-firebase/messaging';


class App extends Component {

  async componentDidMount() {
    messaging().onMessage(async message => console.log("message received!!!")
  }


  render(){
    return (
      <View>
        <Text>Notification App</Text>
      </View>
    )
  }
}

export default App;

Чтобы отправить уведомление Я использую систему тестирования облачных сообщений Firebase:

enter image description here

Я знаю свой идентификатор токена FCM, так что это легко. У меня вопрос, как я могу сделать функцию обратного вызова Messaging (). OnMessage триггер только один раз

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

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

async componentDidMount() {
    this.messageListener = messaging().onMessage(async message => console.log("message received!!!")
  }

componentWillUnmount() {
    this.messageListener();
}
0 голосов
/ 15 апреля 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...