# #javascript #firebase-cloud-messaging #react-native-firebase
Вопрос:
Я создаю функцию для хранения данных через асинхронное хранилище в событии setBackgroundMessageHandler FCM.
Я использую @react-native-firebase/обмен сообщениями. SetBackgroundMessageHandler не работает.
Я следовал учебнику по https://rnfirebase.io/messaging/usage/ios-setup и отправил его с веб-сайта firebase.
Все работает нормально, за исключением текущей функции setBackgroundMessageHandler.
Я долго искал его, но не могу найти ответа.
Я проверил это с помощью реального устройства. Push-сообщение отображается нормально, но событие setBackgroundMessageHandler не происходит.
пакет.json
"@react-native-firebase/app": "^11.2.0",
"@react-native-firebase/messaging": "^11.2.0",
"@react-native-firebase/ml": "^11.2.0",
index.js
import React from 'reactn';
import messaging from '@react-native-firebase/messaging';
import {AppRegistry} from 'react-native';
import App from './App';
messaging().setBackgroundMessageHandler(async remoteMessage => {
// ...is not working
console.log('Message handled in the background!', remoteMessage);
});
function HeadlessCheck({isHeadless}) {
if (isHeadless) {
return null;
}
return <App />;
}
AppRegistry.registerComponent('AppName', () => HeadlessCheck);
Приложение.tsx
React.useEffect(() => {
var _resultList = resultList;
const unsubscribe = messaging().onMessage(async remoteMessage => {
//...is working
}
messaging().onNotificationOpenedApp(remoteMessage => {
//...is working
});
// Check whether an initial notification is available
messaging()
.getInitialNotification()
.then(remoteMessage => {
if (remoteMessage) {
//...is working
}
});
}, []);
Комментарии:
1. Вы решили эту проблему? Я испытываю ту же проблему
2. @DanielTovesson Да, я решил эту проблему. Если быть точным, я нашел способ.
Ответ №1:
С моим кодом не было никаких проблем, и средство тестирования облачных сообщений, предоставленное Firebase, не поступило должным образом.
Успешно сгенерировал токен через игровую площадку OAuth 2.0 и отправил сообщение почтальону. https://developers.google.com/oauthplayground
Приведенный ниже код-это структура, которая успешно передана почтальону. https://fcm.googleapis.com/v1/projects/[firebase-идентификатор проекта]/сообщения:отправить
{
"message": {
"token": "device token]",
"notification": {
"title": "message title",
"body": "hello background worker?"
},
"apns": {
"payload": {
"aps": {
"content-available": 1
}
}
}
}
}