javascript - react-native firebase fcm setBackgroundMessageHandler 不工作

标签 javascript firebase-cloud-messaging react-native-firebase

我正在 FCM 的 setBackgroundMessageHandler 事件中创建一个通过异步存储存储数据的函数。
我正在使用@react-native-firebase/messaging。
SetBackgroundMessageHandler 不工作。
我按照 https://rnfirebase.io/messaging/usage/ios-setup 上的教程进行操作并从firebase网站发送。
除了当前的 setBackgroundMessageHandler 函数外,一切正常。
我一直在寻找它很长时间,但我找不到答案。
我用一个真实的设备对其进行了测试。
推送消息正常显示,但没有发生 setBackgroundMessageHandler 事件。
Xcode BackgroundMode ScreenShot
包.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
      }
    });

  }, []);

最佳答案

我的代码没有问题,Firebase 提供的云消息测试工具没有正确到达。
通过 OAuth 2.0 Playground 成功生成 token 并将消息发送给 postman 。
https://developers.google.com/oauthplayground
下面的代码是成功转移到postman的结构。
https://fcm.googleapis.com/v1/projects/[firebase-project-id]/messages:send

{
    "message": {
        "token": "device token",
        "notification": {
            "title": "message title",
            "body": "hello background worker?"
        },
        "apns": {
            "payload": {
                "aps": {
                    "content-available": 1
                }
            }
        }
    }
}

关于javascript - react-native firebase fcm setBackgroundMessageHandler 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67162001/

相关文章:

javascript - 访问 Jquery 中值的最后三个字符

javascript - 为什么导航栏会向下滑动变窄然后变宽?

java - 无法在我的 firebase 服务中解析方法 'findViewById(int)'

ios - Firebase Messaging 不会在 iOS (11.4.1) 上调用 BackgroundHandler

javascript - map 引擎 + 地理位置 Javascript API

javascript - 如何使用 Firebase 云消息传递通过 Web 浏览器订阅主题

react-native - 如何使用 react-native-firebase 获取推送通知的数量

javascript - 如何为 React Native Firebase 设置函数区域

firebase - 以编程方式更改默认的 firebase 数据库并在默认数据库和辅助数据库上运行相同的 firebase 函数

javascript - 如何在 then 语句中返回一组 promise