【问题标题】:Firebase Cloud Messaging not sending data payloadFirebase 云消息传递不发送数据有效负载
【发布时间】:2018-01-01 04:03:30
【问题描述】:

来自 Defining message payload 的 Firebase 云消息传递文档:

您可以通过创建一个对象来指定一种或两种消息类型 数据和/或通知键。

文档给出了组合消息的示例:

var payload = {
  notification: {
    title: "$GOOG up 1.43% on the day",
    body: "$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day."
  },
  data: {
    stock: "GOOG",
    open: 829.62,
    close: "635.67"
  }
};

同样来自Handle notification messages in a backgrounded app的文档:

这包括同时包含通知和数据负载的消息 (以及从通知控制台发送的所有消息)。在这些 在这种情况下,通知会发送到设备的系统托盘,并且 数据负载在您的意图的附加内容中传递 启动器活动。

我正在发送带有此有效负载的通知:

const payload = {
    notification: {
        title: '...',
        body: '...',
    },
    data: {
        test: "test"
    },
};
admin.messaging().sendToDevice(tokens, payload).then(...)

extras 始终为空:

Intent intent = getIntent();
if (intent != null) {
    Bundle extras = intent.getExtras();
    if (extras != null) {
        // do something
    }
}

我做错了什么?

【问题讨论】:

    标签: android firebase firebase-cloud-messaging


    【解决方案1】:

    接收同时包含通知和数据负载的消息时的应用行为取决于应用是在后台还是前台,本质上是在接收时它是否处于活动状态。

    • 在后台时,应用在通知托盘中接收通知负载,并且仅在用户点击通知时处理数据负载。

    • 在前台时,您的应用会收到一个消息对象,其中包含两个可用的有效负载。

    因此,基本上如果应用程序在前台,则意图不会有任何通知附加功能。如果不是这种情况,您在配置中做错了什么。

    【讨论】:

    • 我得再看看这个。我的应用在后台运行,但是当我点击通知时,我没有收到数据负载。
    • 或者我可以只使用数据消息并自己处理通知
    • 对不起。我必须取消标记你的答案。 Firebase 中有一个错误,它的行为不符合文档。
    • 毕竟没有bug。这是我的一个愚蠢的错误。
    • @SagarChavada 我发现有一个“SplashScreenActivity”正在接收带有数据负载的 Intent,然后这个 Activity 正在启动我的 MainActivity,没有任何负载。
    猜你喜欢
    • 2019-06-12
    • 2017-02-07
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 2017-04-05
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多