无法使用 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云消息传递
无法在 React.js 中接收来自 Firebase 的消息