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

时间:2016-09-29 18:08:12

标签: android firebase firebase-cloud-messaging firebase-notifications

我正在尝试熟悉Firebase通知。它工作正常,但我没有在应用程序未开启时从通知控制台接收消息。

我知道文档说:

  

如果您的应用程序位于前台或后台,您可以在onMessageReceived方法中接收消息,否则用户将收到托盘中的通知...单击它将打开包含意图内数据的主要活动

但即使应用程序已关闭,有没有办法从通知控制台捕获每条消息?

==== ANSWER ====

找到答案here

无法从通知控制台发送数据消息。

但是还有其他方法可以向设备发送通知,并且它们将被捕获在onMessageReceived中!

您可以使用终端(Mac或Linux)或Postman等服务在此链接上发送帖子请求:https://fcm.googleapis.com/fcm/send

下一个身体:

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

您还需要添加2个标题:

  1. 授权 - key = your_server_key_here
  2. Content-Type - application / json
  3. 要获取服务器密钥,可以在firebase控制台中找到它:您的项目 - >设置 - >项目设置 - >云消息传递 - >服务器密钥

    enter image description here

    enter image description here

1 个答案:

答案 0 :(得分:4)

onMessageReceived()方法如果应用程序处于后台,则不会调用 ,只有在通过Firebase控制台发送邮件时才会终止。

当应用未运行时,无论如何都会收到来自firebase控制台的通知。但是,如果您想通过 onMessageReceived()拦截数据,则必须创建一个自定义应用服务器,该服务器仅发送 数据有效负载到fcm端点。简而言之,如果您希望在这种情况下更有效地使用FCM,则必须创建应用服务器。

你可以看看这两个问题,讨论更多关于同样的问题,在第二个问题中,我还简要讨论了使用node.js和java servlet做同样的事情:

  1. Handle the data payload without user tapping on the notification?
  2. How to push notification to client when Firebase has a new entry?
  3. 请告诉我这是否为您提供了一些信息。