Firebase 立即获取通知数据

Var*_*arg 0 android android-intent firebase firebase-cloud-messaging firebase-notifications

我是 firebase 控制台发送通知。它直接向系统托盘发送通知。我想在用户点击它们时从它们那里获取有效负载。

当您的应用程序在后台运行时,Android 会将通知消息定向到系统托盘。默认情况下,用户点击通知会打开应用程序启动器。

这包括包含通知和数据负载的消息(以及从通知控制台发送的所有消息)。在这些情况下,通知将传递到设备的系统托盘,并且数据负载将在启动器活动的意图的附加内容中传递。

https://firebase.google.com/docs/notifications/android/console-audience

我能够获取从控制台发送的通知 如何从我的意图之外获取通知负载?

Var*_*arg 5

我扔掉了额外的包并找到了答案。

这些是我一直在寻找的钥匙:

google.sent_time(长)
来自(字符串)
google.message_id(字符串)
collapse_key(字符串)

除此之外,您还可以直接使用用于自定义数据的密钥(发送消息时)。

当我们从 firebase 控制台发出消息时,我认为只有我们发送的自定义数据才能从 extra 的意图中接收。标题、消息等我无法从这里检索

更新

正如其他人所观察到的那样,我认为不可能从额外意图中提取标题和消息。我找到了一个解决方法,用一个单独的密钥再次传递它们。如何从额外意图中提取数据的一些代码是

Bundle Extras = getIntent().getExtras(); 
public static String Content_KEY = "NotificationContent"; //alterative to message
String Content = Extras.getString(Content_KEY);
Run Code Online (Sandbox Code Playgroud)

我不记得确切的名字,但有两种发送消息的模式。

  1. 第一种模式是 firebase 控制台使用的模式。它直接发送消息

    1. 如果在后台则到系统托盘(作为通知)
    2. 如果在前台,则到 onMessageReceived。

您必须处理这两个问题,如果我在 onMessageReceived 中收到通知,我最终会从应用程序本身将通知发送到系统托盘,以便我可以通过处理主活动中的额外意图的相同代码来管理它们。

如果通知丢失,您也会丢失数据。

  1. 直接从服务器或应用程序向 Firebase 服务器发送消息。我认为消息将始终发送到 onMessageReceived,从而节省了作为单独的密钥再次发送消息的所有痛苦以及如果通知被删除则丢失数据的问题。但在这里您必须设置自己的通知应用程序/服务器