Описание проблемы ::
Я работаю над реагированием собственного приложения и использую службу реагирования собственного firebase для push-уведомлений.У меня проблема на платформе IOS.Я получаю двойные всплывающие уведомления для одного события.
Шаги, которым я следую, чтобы создать случай: *
После установки приложения, если я вхожу в систему и отправляю уведомление через FCMЯ только что получил одно всплывающее окно.После этого я вышел из системы и снова вошел в систему, теперь на этот раз я получил двойные всплывающие окна для одного уведомления.В этом случае я не очищаю приложение от фона.
Если после каждого выхода из системы я очищаю приложение от фона, я только что получил одно всплывающее окно для одного события.
Когда я вышел из приложения и принудительно отправляю уведомление из FCM, я получаю двойное всплывающее окно на экране инициализации приложения (экран входа в систему).
IЯ генерирую новый токен устройства при входе пользователя в систему и сохраняем этот токен в локальном хранилище. Мы очищаем данные локального хранилища при выходе из системы.
Код ::
async mountDashboard() {
const enabled = await firebase.messaging().hasPermission();
if (enabled) {
const fcmToken = await firebase.messaging().getToken();
await AsyncStorage.setItem(LocalStorageKeys.DEVICE_TOKEN, fcmToken);
if (fcmToken) {
//--- here we are saving our token and sendind data to API
}
}
// in Foreground
this.notificationListener = firebase.notifications().onNotification((notification) => {
new RegisterLocalNotification(notification);
});
// App in Foreground and background
let notificationHandler = new NotificationsHandler();
this.notificationOpenedListener = firebase.notifications().onNotificationOpened((notificationOpen) => {
notificationHandler.handleNotification(notificationOpen.notification);
});
// app close notification handler
AppCloseNotificationHandler.getInstance().handleNotification();
}
componentDidMount() {
this.mountDashboard();
}
Среда ::
Двоичные файлы:
- Узел: 10.15.0 - / usr / local / opt / node @ 10 / bin/ node
- Пряжа: 1.10.1 - / usr / local / bin / пряжа
- npm: 6.4.1 - / usr / local / opt / node @ 10 / bin / npm
- Сторож: 4.9.0 - / usr / local / bin / watchman
- Элемент списка
npm Пакеты:
- Реакция: ^ 16.8.4 => 16.8.4
- react-native: ^ 0.58.6 => 0.58.6
npm. Глобальные пакеты:
- act-native-cli: 2.0.1
- реактивная база огня: 5.2.3