应用程序被杀时是否可以接收FCM推送通知?

时间:2017-11-20 18:31:16

标签: android push-notification firebase-cloud-messaging

我正在开发一个电子邮件应用程序,我希望用户在收到新电子邮件后立即收到推送通知。为此我正在使用FCM。我刚刚通过以下链接尝试了使用fcm的推送通知:https://www.youtube.com/watch?v=XijS62iP1Xo&t=6s以测试fcm提供的功能。但我面临的问题是,当app处于前台或后台时,设备会收到推送通知,但是当应用关闭时它不会收到任何推送通知(从任务管理器中滑动或清除)。我不知道如何通过fcm实现这一目标?我希望像whatsApp和facebook一样接收推送通知。

感谢各种帮助。提前谢谢。

4 个答案:

答案 0 :(得分:5)

在应用程序设置中被“强制停止”杀死/停止的应用程序中无法接收推送通知:

Force stop in application settings

让我引用我提出问题时从Firebase支持部门得到的答复:

Android框架会建议已停止运行的应用程序(即 如果没有 明确的用户交互。 FCM遵循此建议,因此 不会将消息传递到已停止的应用程序。这是一些文件 讨论此主题:

这证实了我使用简单的应用程序对其进行测试时所观察到的结果。


但是,即使应用程序在后台运行,即使它已从“最新记录”屏幕中关闭,或者在系统重新启动后,您也应该能够从FCM中获取推送消息。也就是说,除非制造商在您的设备上制作了swipe gesture to work the way "Force stop" doesHow 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);
    }
}