从启动器图标启动应用程序时如何获取通知数据

How to get notification data when the app launched from launcher icon

我已经实现了一项扩展 FirebaseMessagingService 的服务,当应用程序在前台接收到带有我的自定义应用程序内通知视图的通知时,我正在使用它。当应用程序处于后台时,正如所有其他 FCM 相关主题和文档 here 所建议的那样,它由系统托盘处理,我只需要从启动的包中获取数据 activity 和在那里进行我的重定向等。

我还需要做的是,当收到通知并通过点击启动器图标启动应用程序时,而不是通过通知。在这种情况下,我需要获取通知数据并再次相应地进行重定向。但在那种情况下我无法获得附加数据。知道如何在常规应用程序启动时获取通知数据吗?

好的,这就是我解决上述问题的方法,它更像是一种变通方法而不是解决方案,但也许有人会发现它对 his/her 自己的目的有用:

  • 如果应用程序在收到通知时处于后台并且它是从应用程序图标启动但不是通知,那么我在服务的 handleIntent 方法中捕获它扩展 FirebaseMessagingService 以将接收到的数据存储在我的本地。
  • 如果应用程序在收到通知时处于后台并且它是从通知而不是应用程序图标启动的,那么我从 getIntent().getExtras( ) 的 SplasActivity(这是我的 LAUNCHER activity
  • 如果收到通知时应用程序在前台,我会将其显示为应用程序内通知,而不会将任何内容存储到我的本地

并且在我通过通知或应用启动器图标将传入消息显示为应用内通知后,我删除了存储的数据。

这个实现有明显的缺点,但正如我所说,它更像是解决方法而不是解决方案。我想一个合适的解决方案应该将数据作为 数据消息 发送,如 中所述。但不幸的是,这对我来说不是一个选择。