Firebase推送通知和FCM消息有什么区别?

34

你好,我正在构建一个应用程序,在应用中使用Firebase控制台发送推送通知。我想知道简单推送通知和云消息之间的区别是什么? 云消息是数据消息(具有键和值),而通知只是没有键和值的文本吗?我的理解正确吗?

1个回答

68

Firebase API有两种类型的消息,它们称之为:

  • 通知
  • 数据

解释:

  1. 通知 - 仅当您的应用程序在后台/关闭状态时,将直接发送到Android的通知栏或传递到onMessageReceived()方法,如果您的应用程序在前台时会被忽略。

示例:

{
    "notification" : { "body" : "Hi"}
}
  1. 数据负载 - 无论您的应用程序是在前台、后台或被杀死,这些消息始终会传递到onMessageReceived()方法中。

示例:

{
    "data" : { "message" : "Hi", "whatever_key": "value"}
 }

参考链接

重要提示:您不能从 Firebase 控制台 发送数据负载消息,控制台仅提供通知消息。但是,使用 API 可以发送两种类型的消息。

要发送数据负载消息,您需要进行一个 curl 请求:

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..."
}

您可以从Firebase控制台中获取服务器密钥(AIzaSyZ-1u...0GBYzPu7Udno5aA): 您的项目 -> 设置 -> 项目设置 -> 云消息传递 -> 服务器密钥


谢谢伙计,但是我认为从某一天开始,可以从Firebase控制台发送数据消息。您的项目->通知->新消息->高级选项->键和值选项...... 请检查并回复我。 - user6450105
@Atenica 不好意思,目前还无法通过控制台发送数据负载。 - Hisham Muneer
@HishamMuneer,您能演示一下如何将数据发送到Firebase实时数据库吗?因为使用您答案中的技术,我们需要获取所有Android设备的设备ID或在Android设备端订阅。所以我只想将数据推送到Firebase服务器,这样我就可以独立于设备ID或Android设备的订阅工作。 - Dragon
@Dragon,也许我没有理解你的问题,但是要在实时数据库中执行任何操作,您需要使用FirebaseDatabase API。您可以查看此链接是否有帮助:https://firebase.google.com/docs/database/android/read-and-write - Hisham Muneer

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