Я пытаюсь реализовать push-уведомления в React Native с консольным приложением Firebase, следуя этой статье:
React Native: интеграция push-уведомлений с помощью FCM
В Android я могу получать уведомления, когда приложение находится в фоновом режиме, но не могу получать на переднем плане. Использование этого метода для получения уведомлений:
async createNotificationListeners() {
/*
* Triggered when a particular notification has been received in foreground
* */
this.notificationListener = firebase
.notifications()
.onNotification(notification => {
console.info("fg", notification);
const { title, body } = notification;
this.showAlert(title, body);
});
/*
* If app is in background, listen for when a notification is clicked / tapped / opened as follows:
* */
this.notificationOpenedListener = firebase
.notifications()
.onNotificationOpened(notificationOpen => {
console.info("bg", notificationOpen);
const { title, body } = notificationOpen.notification;
this.showAlert(title, body);
});
/*
* If app is closed, check if it was opened by a notification being clicked / tapped / opened as follows:
* */
const notificationOpen = await firebase
.notifications()
.getInitialNotification();
if (notificationOpen) {
console.info("bg", notificationOpen);
const { title, body } = notificationOpen.notification;
this.showAlert(title, body);
}
/*
* Triggered for data only payload in foreground
* */
this.messageListener = firebase.messaging().onMessage(message => {
//process data message
console.info("fg", JSON.stringify(message));
});
}
Здесь firebase.notifications().onNotification или firebase.messaging().onMessage() вообще не запускаются.
В других решениях это связано с тем, что с Android 8 вам нужно создать канал, но я не могу найти никакой возможности создать канал при отправке уведомления от FCM составитель уведомлений.
Абдул,
Вам нужно сделать канал уведомлений с помощью firebase на устройстве.
const channel = new firebase.notifications.Android
.Channel('default', 'Default Channel', firebase.notifications.Android.Importance.Max)
.setDescription('The default notification channel.')
firebase.notifications().android.createChannel(channel)
Это создаст канал, вы можете безопасно вызывать его столько раз, сколько хотите (согласно документации). Ваш прослушиватель onNotification выглядит нормально, вам просто нужно установить канал Android в приходящем уведомлении.
notification.android.setChannelId('default')
Это правильное место для вашего слушателя. Если прослушиватель вообще не срабатывает, я бы начал с двойной проверки вашей настройки для уведомлений и обмена сообщениями. Убедитесь, что в вашем файле манифеста есть служба, которая обрабатывает MESSAGE_EVENT.
где мне создать канал уведомлений?
onNotification()по-прежнему не срабатывает, если я создаю канал вcomponentDidMount()базового компонента моего приложения