Я успешно реализовал базовую функцию уведомлений с использованием библиотеки react-native-firebase
, все работает должным образом, информация получена правильно и готова для использования в целях, которые мне еще предстоит определить.Мой код в настоящее время выглядит следующим образом для части обработки уведомлений:
componentDidMount() {
/**
* When app on foreground, rewrap received notification and re-send it as notification using channelId
* A workaround because channelId never set by default by FCM API so we need to rewrap to make sure it is
* shown on user's notification tray
*/
this.notificationListener = firebase.notifications().onNotification((notification) => {
//data object must have channelId props as a workaround for foreground notification on Android
console.log('Notif ', notification);
notification.android.setChannelId(notification.data.channelId);
firebase.notifications().displayNotification(notification);
});
//On Notification tapped, be it from foreground or background
this.notificationOpen = firebase.notifications().onNotificationOpened((notificationOpen) => {
//body and title lost if accessed from background, taking info from data object by default
const notification = notificationOpen.notification;
console.log('Open ', notification)
Alert.alert(notification.data.title, notification.data.body);
});
//When notification received when app is closed
this.initialNotification = firebase.notifications().getInitialNotification()
.then((notificationOpen) => {
//body and title lost if accessed this way, taking info from data object where info will persist
if (notificationOpen) {
const notification = notificationOpen.notification;
console.log('Initial ', notification)
Alert.alert(notification.data.title, notification.data.body);
}
});
}
componentWillUnmount() {
this.notificationListener();
this.initialNotification()
this.notificationOpen();
}
Приведенный выше код позволяет мне использовать любую информацию, которую я отправил с консоли Firebase или php-сервера, настроенного моим коллегой из вышеуказанной области (неконечно, как была реализована реализация на стороне сервера, но она дает мне точно такой же объект уведомления с моей стороны).
Так что это хорошо и все, но проблема в том, что когда я устанавливаю значок на IOS с консоли Firebase, значок не исчезает, как только я открываю уведомление.Я пытался выяснить, есть ли какой-нибудь дополнительный бит, который я должен добавить к вышеуказанному блоку, чтобы программно уменьшить счетчик значков, но пока мне не повезло.
Так что если кто-то здесь может показать мне, как управлятьэти объекты уведомлений должным образом (особенно объясняя природу и жизненный цикл этих объектов - то есть, какие данные о том, какое свойство / метод сохраняется или является статическим в рамках объекта уведомления) как на Android, так и на IOS, были бы весьма благодарны:)