如何在用户点击通知启动后台应用程序时获取 Android 推送通知负载

How to get Android push notification payload when background App is launched by user click on notification

我有一个 Android 应用程序在后台运行。我已经在 Firebase 中注册了它,并且能够成功检索它的​​令牌,并通过 Firebase 控制台管理器 (FCM) 向它发送消息。

当我通过 FCM 发送测试消息时,当应用程序在前台时

onMessageReceived(remoteMessage:RemoteMessage)

我的 FirebaseMessagingService 派生 class 的回调 API 被触发。然后我可以调用 remoteMessage.notification!!.body 并获取它的有效负载。这是记录在案的行为,因此它按预期工作。

当应用程序在后台运行时(假设我按下主页键),并且我发送了测试消息,该事件不会被调用,而是会在 Android 设备上显示一条通知,这也是预期的行为。到目前为止一切顺利。

但是,当我点击通知通道中的通知时,它会将应用带到前台。但是,当应用程序像那样启动时 - 如何检索推送通知负载? onMessageReceived 未触发,我很难找到在 Android 的文档中回答这个问题。

关于如何获得它的任何指示?

谢谢

我不确定下面的解决方案是最好的。但我认为您可以将消息保存到 share preferences 。并把它带到另一个你想要的地方。

  override fun onMessageReceived(p0: RemoteMessage) {
   //TODO save it to share preferences
}

如果你找到了,请给我另一个更好的解决方案。非常感谢。

原来这个问题提供了我正在寻找的答案。 TL;DR - 查看 Activity

intent 变量中的 extras 字段