react-родной firebase fcm setBackgroundMessageHandler не работает

# #javascript #firebase-cloud-messaging #react-native-firebase

Вопрос:

Я создаю функцию для хранения данных через асинхронное хранилище в событии setBackgroundMessageHandler FCM.

Я использую @react-native-firebase/обмен сообщениями. SetBackgroundMessageHandler не работает.

Я следовал учебнику по https://rnfirebase.io/messaging/usage/ios-setup и отправил его с веб-сайта firebase.

Все работает нормально, за исключением текущей функции setBackgroundMessageHandler.

Я долго искал его, но не могу найти ответа.

Я проверил это с помощью реального устройства. Push-сообщение отображается нормально, но событие setBackgroundMessageHandler не происходит.

Снимок экрана фона Xcode

пакет.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
                }
            }
        }
    }
}