firebase-cloud-messaging 入门

一个臭名昭着的常见问题是如何从设备发送通知,遗憾的是答案是:你做不到。需要触发 FCM 才能发送推送通知。这可以通过 3 种不同的方式完成:

  1. 直接在 Firebase Web 控制台中
  2. 设置 Firebase 函数侦听器,然后触发 FCM
  3. 服务器请求 FCM 发送推送通知

推送通知是从 FCM 发送的信息有效负载。推送通知有 3 种类型:notificationdatanotification and data。此信息可以表示为 JSON:

  {
    "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
    "notification" : {
      "body" : "great match!",
      "title" : "Portugal vs. Denmark",
      "icon" : "myicon"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }

上面的例子是第三种类型,notificationdata 的组合。这就是要求 FCM 发送的内容。

  1. 控制台可以发送 notificationnotificationdata 但不仅仅是 data
  2. 功能和任何服务器都可以发送 3 种类型

notification 类型的重要性在于,允许应用程序接收默认*推送功能,*使其他团队(如市场营销)能够通过简单地使用 Web 控制台来增加应用程序增长,而无需在将库添加到项目之后进行进一步编码。

请不要混淆推送通知,notification 类型和视觉通知,这最后对应一个 Android 类(通常是 NotificationCompat)。

推送的行为根据类型和应用程序位于前台或后台而不同。不在前景意味着,最小化或关闭。

  1. 如果应用程序不在前台notification 将触发默认的可视通知,此通知可在清单中自定义,请参阅文档 。如果应用程序位于前台,我们必须自定义 onMessageReceived 方法中的行为。
  2. 必须始终定制 data 类型的行为。
  3. 如果应用程序**不在前台,**则组合 notificationdata 将触发默认视觉通知,并且当用户单击时,data 有效负载将可用。由于在单击视觉通知时触发了启动器活动,因此你必须在该活动中逐字地获取数据。如果应用程序处于活动状态(在前台),则必须自定义 onMessageReceived 方法内的行为,并立即访问 data 有效负载。

要获取信息有效负载,你必须在 onMessageReceived 方法中执行此操作,唯一可用的参数是消息:

  1. 要获得 notification,你必须使用相应的方法获得身体或头衔
  2. 要获得 data,你必须得到 remoteMessage.getData().get("yourKey")

添加每个非空验证是一个好主意,将有几种类型的通知到达高级应用程序。一个好的策略是验证 notificationdata 是否都不为空。随之而来的有用策略是在 data 通知中始终使用 type 键来进行一些流程控制。

要从 Firebase Web 控制台发送 data,必须打开高级选项。

notification 键是有限的,并在文档中指出。任何类型的值都只能是 String

如果你在 Firebase 中找到任何文档时遇到问题,请转到页面底部并将语言更改为英语,其他语言的文档更薄