【问题标题】:How to send message from Firebase to device when app is killed? [duplicate]应用程序被杀死时如何从 Firebase 向设备发送消息? [复制]
【发布时间】:2017-02-08 04:27:01
【问题描述】:

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

我知道文档是这样说的:

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

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

==== 回答 ====

寻找答案here

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

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

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

与下一个身体:

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

您还需要添加 2 个标题:

  1. 授权 - key=your_server_key_here
  2. 内容类型 - 应用程序/json

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

【问题讨论】:

  • 简而言之,要唤醒您被杀死的应用程序,您应该始终发送带有数据对象的通知,以在您的应用程序中调用通知服务类处理程序 FirebaseMessagingService.onMessageReceived()。也可以尝试不要从 Firebase 控制台发送,而是从其他地方发布(例如在线测试后服务)。

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


【解决方案1】:

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?

如果这为您提供了一些信息,请告诉我。

【讨论】:

  • 抱歉,您的答案不是我正在搜索的内容...我已经找到答案,请参阅更新
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多