在关闭时获取android通知的数据有效负载

在关闭时获取android通知的数据有效负载,android,firebase,firebase-cloud-messaging,Android,Firebase,Firebase Cloud Messaging,我正在使用Firebase云消息向我的应用程序发送带有数据负载的通知 当我发送通知时,如果我的应用程序正在运行(前台),我会从FirebaseMessagingService类获取覆盖onMessageReceived()的数据 如果我的应用程序未运行,则会将通知发送到“系统托盘”,当用户在通知中单击“我的应用程序启动”时,我可以使用意图的getExtras获取数据 但是,如果用户在“系统托盘”中取消通知,我如何获取数据 我需要编写一些后台服务来“侦听”通知以获取此信息?那么基本上您想要存储这些

我正在使用Firebase云消息向我的应用程序发送带有数据负载的通知

当我发送通知时,如果我的应用程序正在运行(前台),我会从
FirebaseMessagingService
类获取覆盖
onMessageReceived()
的数据

如果我的应用程序未运行,则会将通知发送到“系统托盘”,当用户在通知中单击“我的应用程序启动”时,我可以使用意图的
getExtras
获取数据

但是,如果用户在“系统托盘”中取消通知,我如何获取数据


我需要编写一些后台服务来“侦听”通知以获取此信息?

那么基本上您想要存储这些数据

如果要存储该数据,请在OnReceive()方法中编写代码,并在其中编写数据库插入代码

然后在里面插上一面旗子,像“disposed=true” 若用户打开了你们的通知,那个么把它设为false,你们就可以得到结果了


没有特定的方法来检测应用程序的通知是否被取消。因此,您必须手动维护该数据。

似乎您正在从Firebase控制台发送通知。这些消息总是
通知消息
。如果
通知消息
附带有数据有效负载,则只有用户点击通知时,该数据才可用于应用程序。如果用户从未点击该通知,则您的应用程序将无法使用该数据。因此,您不应该使用
notification messages
向应用程序发送应用程序关键数据


如果发送
数据消息
,它们总是由
onMessageReceived
回调处理。此时,您可以静默处理消息或显示自己的通知。因此,如果您希望确保应用程序有机会处理消息中的数据,请使用
数据消息

我认为您必须自己管理通知才能做到这一点,而不是让firebase生成通知我正在使用onMessageReceived()存储数据。问题是onMessageReceived()仅在我的应用程序运行时调用。如果我的应用程序没有运行,则通知将传递到“通知托盘”,这样,如果用户“打开”通知,我只能通过intent.getExtras()获取数据。如果他取消通知,数据将丢失,我无法获取。我没有使用Firebase控制台。我编写了一些PHP代码,将通知和数据消息一起发送,如下所示:“发送到”=>“/topic/test”、“通知”=>“test”、“数据”=>“test”,但是,我在Firebase文档中看到,我们只能发送通知,只能发送数据或同时发送两者。我将尝试只发送数据以测试它是否工作仅供参考它应该是/topics/test,而且通知和数据有效负载有一个特定的格式,它们不能只是字符串。Hello@Arthur。我把它作为我如何发送信息的一个例子。实际上,我创建了一个JSON,然后通过POST发送到Firebase服务器。我尝试只使用数据消息,如果我的应用程序运行在前台或后台(最近的应用程序列表),则调用onMessageReceived。但是,如果我从最近的列表中关闭(删除)该应用程序,则不会传递/接收消息,因为未调用OnMessageReceived。这可能会导致设备制造商限制,不允许为未运行或在后台的应用程序启动服务。您是否在其他设备或模拟器上尝试过此功能?