如何在用户点击通知启动后台应用程序时获取 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
字段
我有一个 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
字段