应用在前台时,在系统托盘中收到FCM通知

7

当应用程序在后台时,我可以在系统托盘中看到通知。

但是,即使应用程序在前台,我也希望通知能显示在系统托盘中。

我在Android上尝试了以下操作:

  • 从Firebase控制台发送通知:只有当应用程序在后台运行时,我才能在系统托盘中看到通知。
  • 按照此处的说明将POST请求发送到https://fcm.googleapis.com/fcm/send,同时使用datanotification负载:同样,只有当应用程序在后台运行时,我才能在系统托盘中看到通知。

这个文档提到:

具有通知和数据负载的消息,无论应用程序处于后台还是前台都会被接收。在这种情况下,通知将被传递到设备的系统托盘,并且数据负载将在启动器活动的意图的extra中传递。

我错过了什么?

我使用Android和Cordova/Ionic。


2
你能解决这个问题吗?我们遇到了同样的情况,这是预期的行为。我们可以使用与通知负载中相同的信息发送数据负载,然后将其发送到本地通知。但是我们还有另一个问题,本地通知具有ID,FCM通知具有TAG,因此我们无法使用本地通知或反之覆盖FCM通知。有什么想法吗? - Michael Burger
3个回答

2
如果想要在应用程序前台时出现通知,您需要发送一个包含数据负载的消息,然后编写处理该消息的代码,如您所引用的文档中所述。
当您发送带有通知负载的消息时,FCM将与您描述的方式完全相同运作。当应用程序在后台时,它会为您显示通知,而当应用程序在前台时,它则不会。
请注意,数据通知负载的行为是不同的,正如文档中所述。

我尝试仅使用数据“payload”发送通知,但我仍然看不到它在托盘区域中。显然,这是不可能的:https://github.com/fechanique/cordova-plugin-fcm/issues/365#issuecomment-348563368 - Ari
请阅读我在答案中引用的文档。数据有效载荷与通知有效载荷具有不同的行为。 - Doug Stevenson
@DougStevenson 文档对于通知消息很清晰,但也是错误的:“FCM代表客户端应用程序自动向最终用户设备显示消息。通知消息具有预定义的一组用户可见键和自定义键值对的可选数据有效负载。”不幸的是,它所说的和它实际做的是两回事。 - James Moore
@JamesMoore - 文档还说:“当应用程序在后台运行时,通知消息将传递到通知托盘。对于前台应用程序,消息由回调函数处理。”确实如此。假设应用程序正在使用中,应用程序设计人员可能希望在其应用程序的上下文中显示“通知”,例如作为标准系统托盘通知。如果您真的想要通知,请参见其他答案中的“本地通知”。 - ToolmakerSteve

0

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接