我正在开发一个电子邮件应用程序,我希望用户在收到新邮件时会收到推送通知。为此,我使用了FCM。我刚刚通过以下链接尝试了使用FCM的推送通知:https://www.youtube.com/watch?v=XijS62iP1Xo&t=6s,以测试FCM提供的功能。但我面临的问题是,当应用程序在前台或后台时,设备会收到推送通知,但当应用程序关闭(从任务管理器中滑动或清除)时,它不会收到任何推送通知。我不知道如何通过FCM实现这一点?我想像WhatsApp和Facebook应用程序一样接收推送通知。
感谢你的帮助,先谢了。
4条答案
按热度按时间ybzsozfc1#
推送通知有两种类型:数据电文和通知电文。
如果您使用的是数据消息,您将负责处理收到的消息并向用户显示通知(当然,如果需要)。但在这种情况下,当您的应用程序关闭时,您可能会错过通知。
如果您正在使用通知消息,FCM将为您处理消息,并在应用处于后台/关闭时直接显示通知。
请在这里查看更多信息。
vmpqdwk32#
无法在应用程序设置中已被“强制停止”关闭/停止的应用程序中接收推送通知:
让我引用一下我向Firebase Support提出这个问题时得到的回答:
Android框架建议在没有明确用户交互的情况下,不应启动已停止的应用(即从“设置”中取消/强制停止的应用)。FCM遵循此建议,因此不会向已停止的应用发送消息。以下是讨论此主题的一些文档:
这证实了我在使用一个简单的应用程序测试时观察到的情况。
但当应用处于后台时,你应该能够从FCM获得推送消息,即使它是从“最近使用”屏幕上删除的,或者在系统重新启动后。也就是说,除非制造商在你的设备上制造了swipe gesture to work the way "Force stop" does。你在后台如何接收它取决于推送通知是否包含
"notification"
有效载荷:"data"
,并且它将在通知操作启动的Activity的Intent
extras中交付。onMessageReceived
中收到通知,就像您在应用处于前台时一样。您的应用未被终止,但仍可能无法接收推送通知的其他一些情况:
tyky79it3#
只有当您考虑发送数据有效负载而不是通知并在
onMessage()
中处理时才可以获取更多信息
How to handle firebase notification on background as well as foreground?
ie3xauqp4#
如果您的应用是
Killed
或在后台运行,请在启动屏幕中检查Payload
在我的情况下,它是主活动,因此在onCreate()
中检查其他内容: