无法使用 Firebase 控制台发送数据消息

Posted

技术标签:

【中文标题】无法使用 Firebase 控制台发送数据消息【英文标题】:Unable to send data message using firebase console 【发布时间】:2017-04-05 04:39:21 【问题描述】:

我正在使用 firebase 控制台,并且只能使用它发送通知消息。

有没有办法使用相同的方式发送数据消息?

【问题讨论】:

【参考方案1】:

Firebase 通知控制台只能用于发送通知消息。它不能用于发送数据消息。

见message types in the Firebase documentation中的表格:

通知消息

使用场景:FCM 代表客户端应用程序自动向最终用户设备显示消息。通知消息具有一组预定义的用户可见键。

如何发送

    使用您的应用服务器和 FCM 服务器 API:设置通知密钥。可能有可选的数据负载。始终可折叠。

    使用通知控制台:输入消息文本、标题等,然后发送。通过在通知控制台中提供自定义数据来添加可选数据负载。始终可折叠。

数据信息

使用场景:客户端应用负责处理数据消息。数据消息只有自定义键值对。

如何发送

使用您的应用服务器和 FCM 服务器 API:仅设置数据密钥。可以是可折叠的,也可以是不可折叠的。

【讨论】:

错误答案.. 如果他将使用 Messaging API ("downstream msg"),您可以使用它来更新数据库 您绝对可以通过向 HTTP 端点发送 POST 请求来使用 Firebase Cloud Messaging 发送下游数据消息。但是你不能从Firebase Notifications Console发送数据消息,这就是问题所在。【参考方案2】:

请看这里:Firebase push notifications update DB,我在 6 月份的帖子。

总之,你需要向https://fcm.googleapis.com/fcm/send发送HTTP POST请求

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

 "data": 
"score": "5x1",
"time": "15:10"
,
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."

【讨论】:

这个答案不适合这个问题的上下文。请检查提出的问题 - 他特别询问有关使用控制台发送数据消息这是不可能的 如果要向特定主题发送数据消息,“to”属性的值必须为“/topics/TOPIC_ID”形式,否则会报错跨度> 正是我需要的! “支持”因为提供了替代方案!请在您的回答中添加一条说明“无法从 FB 控制台 atm 发送数据消息并提供替代方案”以完成它。【参考方案3】:

您可以使用 Postman(用于测试 http 请求的休息客户端)测试通知消息和数据消息。查看屏幕截图:

在标头传递中:

key:Content-Type, value:application/json
key:Authorization:key=<Server key>

【讨论】:

这种方式已经没有了。现在您还需要 OAuth2 令牌 对于正确的服务器密钥,单击 firebase 控制台左上角的设置图标,然后单击项目设置 > 云消息传递 > 服务器密钥 刚刚确认使用邮递员发送数据消息仍然可用。【参考方案4】:

您现在可以通过控制台发送 notification message。请注意,它不同于数据消息;通知消息仅在应用处于前台时触发onMessageReceived 回调。

它们位于撰写消息屏幕上的高级选项选项卡中。

只需展开它并输入您的键/值映射。

这些将包含在通知的数据字段中。

【讨论】:

这不能正常工作。如果您的应用在后台,您将不会收到对“onMessageReceived”的回调,即使您应该包含“数据”。 @WiseShepherd 我昨天确实注意到了同样的问题,它只能发送通知消息而不能发送数据消息。我更新了我的答案。 这仅在应用程序处于前台时有效。当应用程序在后台时,它只考虑来自有效负载的通知数据并忽略数据部分。这导致无法控制应用程序,因为通知类型的消息将由系统单独处理。唯一的选择是使用您自己的外部服务器或从其他客户端发送。

以上是关于无法使用 Firebase 控制台发送数据消息的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 Firebase 控制台的情况下向 iOS 设备发送 Firebase 云消息通知?

无法将iOS CriticalAlert发送到Firebase云消息传递

在 Java 中向 Firebase 中的特定主题发送通知

无法在 React.js 中接收来自 Firebase 的消息

无法将数据从 Stripe webhook 发送到 Firebase

iOS Swift 使用 Firebase 云消息发送丰富的推送通知