我正在开发一个电子邮件应用程序,我希望用户在收到新电子邮件后立即收到推送通知。为此我正在使用FCM。我刚刚通过以下链接尝试了使用fcm的推送通知:https://www.youtube.com/watch?v=XijS62iP1Xo&t=6s以测试fcm提供的功能。但我面临的问题是,当app处于前台或后台时,设备会收到推送通知,但是当应用关闭时它不会收到任何推送通知(从任务管理器中滑动或清除)。我不知道如何通过fcm实现这一目标?我希望像whatsApp和facebook一样接收推送通知。
感谢各种帮助。提前谢谢。
答案 0 :(得分:5)
在应用程序设置中被“强制停止”杀死/停止的应用程序中无法接收推送通知:
让我引用我提出问题时从Firebase支持部门得到的答复:
Android框架会建议已停止运行的应用程序(即 如果没有 明确的用户交互。 FCM遵循此建议,因此 不会将消息传递到已停止的应用程序。这是一些文件 讨论此主题:
这证实了我使用简单的应用程序对其进行测试时所观察到的结果。
但是,即使应用程序在后台运行,即使它已从“最新记录”屏幕中关闭,或者在系统重新启动后,您也应该能够从FCM中获取推送消息。也就是说,除非制造商在您的设备上制作了swipe gesture to work the way "Force stop" does。 How you receive it in the background取决于推送通知是否包含"notification"
有效负载:
"data"
,并且该通知将以Intent
的形式发送到通知操作所发起的活动中。onMessageReceived
中收到通知,就像应用程序处于前台一样。答案 1 :(得分:4)
推送通知有两种类型:数据消息和通知消息。
如果您使用数据信息,您将负责处理收到的信息并向用户发送通知(当然,如果需要)。但在这种情况下,当您的应用关闭时,您可能会错过通知。
如果您使用通知消息,则FCM正在为您处理该消息,并在应用处于后台/已关闭时直接显示通知。
请参阅更多here。
答案 2 :(得分:0)
仅当您考虑发送数据有效负载而不是通知并在onMessage()
在此处获取更多信息
How to handle firebase notification on background as well as foreground?
答案 3 :(得分:0)
如果您的应用是Killed
或在后台运行,请在启动屏幕中检查Payload
在我的情况下是MainActivity,因此在onCreate()
中检查其他内容:
if (getIntent().getExtras() != null) {
for (String key : getIntent().getExtras().keySet()) {
Object value = getIntent().getExtras().get(key);
Log.d("MainActivity: ", "Key: " + key + " Value: " + value);
}
}