如何在应用程序关闭时从Firebase向设备发送消息?

10

我正在尝试熟悉Firebase通知。它能正常工作,但是当应用程序没有打开时,我无法接收来自通知控制台的消息。

我知道文档上说:

如果您的应用程序在前台或后台,您可以在onMessageReceived方法中接收消息,否则用户将在托盘中收到通知……点击通知将打开带有数据的主活动

但是,是否有任何方法可以捕获通知控制台中的每条消息,即使应用程序已关闭?

==== 答案 ====

在这里找到答案

没有办法从通知控制台发送数据消息。

但是,有其他方法向设备发送通知,它们将在onMessageReceived内被捕获!

您可以使用终端(Mac或Linux)或一些服务(如Postman)通过此链接发送Post请求:https://fcm.googleapis.com/fcm/send

下面是要发送的主题:

{
    "to": "/topics/your_topic_here",
   "data": {
       "text":"text",
       "text1":"text1",
       ...
   }
}

还需要添加两个标题:

  1. 授权 - key=在此输入您的服务器密钥
  2. 内容类型 - 应用程序/json

要获取您的服务器密钥,您可以在Firebase控制台中找到它:您的项目->设置->项目设置->云消息传递->服务器密钥

图片描述

图片描述


简单来说,要唤醒已停止的应用程序,您应该始终发送带有数据对象的通知,以调用应用程序中的通知服务类处理程序FirebaseMessagingService.onMessageReceived()。还可以尝试不从Firebase控制台发送,而是从其他地方(例如在线测试发布服务)发布。 - Zon
1个回答

5

onMessageReceived() 方法只有当通过 Firebase 控制台发送消息时,应用程序在后台或被杀死时不会被调用。

当应用程序未运行时,您将从 Firebase 控制台收到通知。但是,如果要通过 onMessageReceived() 拦截数据,则必须创建一个自定义应用程序服务器,该服务器将仅发送数据有效负载到 FCM 终端。简而言之,在这种情况下,如果您真正想要更有效地利用 FCM,则必须创建一个应用程序服务器。

您可以查看这两个问题,它们讨论了与此相关的更多内容,在第二个问题中,我还简要讨论了使用 node.js 和 java servlet 进行同样操作:

  1. 如何处理数据负载,而无需用户点击通知?
  2. Firebase 有新条目时如何向客户端推送通知?

如果这些信息对您有所帮助,请告诉我。


抱歉,但您的答案并不完全符合我的搜索要求... 我已经找到了答案,请查看更新。 - Andriy Antonov

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