android 当应用程序被终止时,是否可以接收FCM推送通知?

ki1q1bka  于 2023-02-14  发布在  Android
关注(0)|答案(4)|浏览(350)

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

ybzsozfc

ybzsozfc1#

推送通知有两种类型:数据电文通知电文
如果您使用的是数据消息,您将负责处理收到的消息并向用户显示通知(当然,如果需要)。但在这种情况下,当您的应用程序关闭时,您可能会错过通知。
如果您正在使用通知消息,FCM将为您处理消息,并在应用处于后台/关闭时直接显示通知。
请在这里查看更多信息。

vmpqdwk3

vmpqdwk32#

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

让我引用一下我向Firebase Support提出这个问题时得到的回答:
Android框架建议在没有明确用户交互的情况下,不应启动已停止的应用(即从“设置”中取消/强制停止的应用)。FCM遵循此建议,因此不会向已停止的应用发送消息。以下是讨论此主题的一些文档:

这证实了我在使用一个简单的应用程序测试时观察到的情况。
但当应用处于后台时,你应该能够从FCM获得推送消息,即使它是从“最近使用”屏幕上删除的,或者在系统重新启动后。也就是说,除非制造商在你的设备上制造了swipe gesture to work the way "Force stop" does。你在后台如何接收它取决于推送通知是否包含"notification"有效载荷:

  • 如果是这样,您将仅在用户点击通知时收到"data",并且它将在通知操作启动的Activity的Intent extras中交付。
  • 如果没有,您将在onMessageReceived中收到通知,就像您在应用处于前台时一样。

您的应用未被终止,但仍可能无法接收推送通知的其他一些情况:

  • 如果您不为推送消息使用高优先级,则可能会由于低电耗模式而延迟
  • 如果您的应用程序受后台限制,则可能无法传递消息
tyky79it

tyky79it3#

只有当您考虑发送数据有效负载而不是通知并在onMessage()中处理时才可以
获取更多信息
How to handle firebase notification on background as well as foreground?

ie3xauqp

ie3xauqp4#

如果您的应用是Killed或在后台运行,请在启动屏幕中检查Payload在我的情况下,它是主活动,因此在onCreate()中检查其他内容:

if (getIntent().getExtras() != null) {
    for (String key : getIntent().getExtras().keySet()) {
        Object value = getIntent().getExtras().get(key);
        Log.d("MainActivity: ", "Key: " + key + " Value: " + value);
    }
}

相关问题