5

当应用程序处于后台时,使用FCM的Android推送通知无法处理。默认消息显示在通知托盘中。

任何人都可以帮助我在后台应用时如何处理消息吗。

@覆盖public void onMessageReceived(远程消息远程消息){super.onMessageReceived(远程消息);

}

当应用程序处于后台时,不会调用此方法。任何帮助都会对我有很大帮助。

8
  • stackoverflow.com/a/42268901/7320259检查这个 评论 2017年2月22日10:46
  • 1
    这就是通知消息的工作方式。。。正如文档中所述,有两种消息类型。。。它也写下了它们是如何工作的。
    – 塞尔文
    评论 2017年2月22日10:46
  • androidhive.info/2012/10/…试试这个,它可以帮助你获得后台通知 评论 2017年2月22日10:47
  • androidhive是一个糟糕的教程源代码,也是从2012年开始的,所以它已经过时了(因为它使用的是GCM而不是FCM)
    – 塞尔文
    评论 2017年2月22日10:49
  • 1
    我这里的问题是,当应用程序处于backgorund时,“onMessageReceived”块没有被调用…这也是通知类型消息的工作方式你不能改变它,您需要发送第二种类型的消息。。。什么是第二种类型?如何发送?这一切都在FCM的文档中(以及数千个类似的问题,请点击stackoverflow-互联网搜索:“onmessagereceived not call”)
    – 塞尔文
    评论 2017年2月22日12:15

1答案1

重置为默认值

如果您总是从服务器以“数据”的形式接收有效负载,那么将始终调用onMessageReceived()。

例子:服务器的有效负载应如下所示:

{“数据”:{“id”:1,“错过的请求”:5“在此处添加任何数据”:123},“至”:“fhiT7evmZk8:APA91bFJq7Tkly4BtLRXdYvqHno2vHCRkzpJT8QZy0TlIGs……”}

了解有关此问题的更多信息。请参阅以下URL:应用程序在后台时未调用Firebase onMessageReceived

4
  • 谢谢你的建议。我已经发现这是你的正确建议仍被否决的问题。 评论 2017年2月23日5:47
  • 即使数据有效负载来自服务器,我也无法获得它,我只能在foregound中记录 评论 2017年10月12日10:54
  • 整个有效载荷应在“数据”中。 评论 2017年10月12日11:22
  • 通知有效负载和数据有效负载的混合将导致无法在后台处理的消息。因此,一定要删除所有通知负载! 评论 2018年4月11日7:44

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.