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

42
我正在使用 Firebase 控制台,并且只能使用它发送通知消息。 是否有一种方法可以使用相同的控制台发送数据消息呢?
4个回答

29

Firebase通知控制台只能用于发送通知消息,无法用于发送数据消息。

请参考Firebase文档中的消息类型表格

通知消息

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

发送方式

  1. 使用您的应用服务器和FCM服务器API:设置通知键。 可以有可选的数据有效负载。 始终是可折叠的。

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

数据消息

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

发送方式

  • 使用您的应用服务器和FCM服务器API:仅设置数据键。 可以是可折叠或不可折叠的。

答案错误。如果他使用消息API(“下行消息”),则可以使用它来更新数据库。 - Nirel
13
您可以通过向HTTP端点发送POST请求来使用Firebase Cloud Messaging发送下行数据消息。但是无法从Firebase通知控制台发送数据消息,这正是该问题的疑问所在。 - Frank van Puffelen

28

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

enter image description here

在Header中传递:

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

这种方式不再可用。现在您还需要OAuth2令牌。 - Ruslan Leshchenko
1
要获取正确的服务器密钥,请在 Firebase 控制台左上角单击设置图标,然后选择“项目设置”>“云消息传递”>“服务器密钥”。 - Peter Wauyo
刚刚确认使用Postman发送数据消息仍然可用。 - BabyishTank

22

请看这里:Firebase推送通知更新数据库,这是我六月份的帖子。

总之,你需要向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..."
}

3
这个回答不符合问题的背景。请检查所提出的问题 - 他明确询问如何使用控制台发送数据消息,这是不可能的 - Nishant Dubey
1
如果您想向特定主题发送数据消息,则属性“to”的值必须采用“/topics/TOPIC_ID”的形式,否则将会出现错误。 - Apperside
1
正是我所需要的! - enyciaa
因为提供了一个替代方案,所以点赞!请在您的回答中添加一条注释,说明“目前无法从FB控制台发送数据消息,并提供替代方案”。 - Ayyappa

6
现在您可以通过控制台发送通知消息。请注意,它与数据消息不同;只有当应用程序在前台时,通知消息才会触发onMessageReceived回调函数。
它们位于高级选项选项卡中的撰写消息屏幕内。

enter image description here

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

enter image description here

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

27
如果你的应用在后台运行并且包含"data",你本应该收到“onMessageReceived”回调,但实际上无法正常工作。 - Wise Shepherd
@WiseShepherd,我昨天也注意到了同样的问题,它只能发送“通知消息”,而不能发送“数据消息”。我已经更新了我的答案。 - oldergod
这仅在应用程序在前台时起作用。当应用程序在后台时,它仅考虑来自有效载荷的通知数据并忽略数据部分。这将导致无法控制应用程序,因为只有系统会处理通知类型消息。唯一的选择是使用您自己的外部服务器或从rest客户端发送。 - Ayyappa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接