【发布时间】:2021-12-16 17:37:37
【问题描述】:
我已经实现了一项扩展 FirebaseMessagingService 的服务,并且当应用程序处于前台时,我正在使用它,并使用我的自定义应用程序内通知视图接收到通知。当应用程序处于后台时,正如所有其他 FCM 相关主题和文档here 所建议的那样,它由系统托盘处理,我只需要从已启动活动的捆绑包中获取数据并进行重定向等在那里。
我还需要做的是,当收到通知并通过点击启动器图标启动应用程序时,而不是通过通知。在这种情况下,我需要获取通知数据并再次相应地进行重定向。但在这种情况下,我无法获取附加数据。知道如何在常规应用启动时获取通知数据吗?
【问题讨论】:
-
您在应用关闭时只需要远程数据,并且不想在那个时候显示通知吗??
-
是的,我需要数据,稍后我会在应用程序启动时显示。我知道我可以随时重写 FirebaseMessagingService 的 handleIntent 方法来获取数据,但我不确定这是否正确
-
有一个解决方案,但我不能说它总是有效。创建一个单独的服务,每 5 秒 ping 一次,并创建一个静态对象,通知您应用程序已打开。如果应用程序是打开的,那么 onMessageReceived 会做任何你想做的事情,如果应用程序关闭意味着静态实例被杀死,然后使用 timeinmillies 存储数据并检查启动器活动中存储的数据以执行你的功能。
-
不,这工作量太大了。我可以使用 handleIntent 来做类似的事情,但工作量更少,因为每个意图(解雇、新令牌、接收)都会先于其他任何地方落入那里。但是根据文档,我们应该使用 onMessageReceived,所以我不确定这是否正确
-
好的,我只是建议方法,如果我卡在那里,我会尝试这个,希望你能找到更好的解决方案,如果你没有得到解决方案,请尝试这个,谢谢。
标签: android firebase-cloud-messaging android-notifications