Я использую собственную базу реагирования для push-уведомлений, и они работают нормально.Уведомления идут прямо.Проблема, с которой я сталкиваюсь, заключается в том, что когда я получаю уведомление, «заголовок» и «тело» полезных данных уведомления становятся неопределенными.
Во время отладки я проверил отправляемое тело и заголовок и обнаружил, что это именно те данные, которые я хочу отправить.
именно здесь я отправляю push-уведомления.
sendPushNotification = async (fcmToken, title, body) => {
const payload = {
to: fcmToken,
notification: {
title: title,
body: body,
sound: "true"
}
}
fetch("https://fcm.googleapis.com/fcm/send", {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'key=*****'
},
body: JSON.stringify(payload),
})
.then((response) => response.json())
.then((responseJson) => {
console.log(responseJson)
})
.catch((error) => {
console.log(error);
});
}
И именно здесь я использую прослушиватели уведомлений, а заголовок и текст и звук отображаются неопределенными.
async createNotificationListeners(nav) {
/*
* Triggered when a particular notification has been received in foreground
* */
this.notificationListener = firebase.notifications().onNotification( async (notification) => {
const { title, body } = notification;
await this.getConnectionsRequests();
console.log("we are here")
//this.showAlert(title, body);
});
/*
* If your app is in background, you can listen for when a notification is clicked / tapped / opened as follows:
* */
this.notificationOpenedListener = firebase.notifications().onNotificationOpened( async (notificationOpen) => {
const { title, body } = notificationOpen.notification;
nav.navigate("MyChats")
await this.getConnectionsRequests();
//this.showAlert(title, body);
});
/*
* If your app is closed, you can check if it was opened by a notification being clicked / tapped / opened as follows:
* */
const notificationOpen = await firebase.notifications().getInitialNotification();
if (notificationOpen) {
const { title, body } = notificationOpen.notification;
nav.navigate("MyChats")
// this.showAlert(title, body);
}
/*
* Triggered for data only payload in foreground
* */
this.messageListener = firebase.messaging().onMessage((message) => {
//process data message
console.log(JSON.stringify(message));
});
}
Я использую этих слушателей на другом экране следующим образом:
componentDidMount = async () => {
await this.props.store.createNotificationListeners(this.props.navigation);
}
Когда вызывается NotificationOpenedListener, заголовок и тело должны совпадатькак тот, который я отправляю, используя sendPushNotification ().
Любая помощь будет оценена.Спасибо.