应用关闭时的Firebase通知

时间:2016-12-29 16:06:41

标签: android firebase firebase-cloud-messaging firebase-notifications

我在Android应用程序中实现了Firebase通知。当我的应用程序运行时,将显示包含我的自定义布局的通知,但是当应用程序未运行时,通知将以默认布局显示。如何在应用程序未运行时将通知布局更改为我的布局。此外,我存储共享首选项以允许用户切换通知。但是当应用程序未运行时,无论如何都会显示通知。怎么能实现呢?

Me.Filter = "UCase([GuestName]) LIKE """ & "*" & UCase(TempVars!tvGuestName) & "*""""

3 个答案:

答案 0 :(得分:25)

您的问题是您在通知托盘中使用它。

请参阅此link

  

包含通知和数据有效负载的消息,包括后台和前台。在这种情况下,通知将传递到设备的系统托盘,并且数据有效负载将在启动器活动的附加内容中传递。

如果您在应用程序处于后台时将{data:"something"}(data-message){notification:"something"}(display-message)一起使用,则数据有效负载将传递给intent的额外内容,而不是onMessageReceived()方法。我假设您实现了代码用于显示通知,因此当您的应用程序处于前台onMessageReceived()时触发它并显示您想要的所需通知但是当它不是onMessageReceived()时没有获取触发器而是android系统将使用您的通知有效负载处理它。您只需从服务器端代码中删除{notification:"something"}(display-message/notification tray)即可始终确保onMessageReceived()

对于任何人,一直提及onMessageReceived()将始终触发,无论它不是前景或背景,请访问此link

答案 1 :(得分:11)

有两种类型的FCM消息

  1. 通知消息
  2. 数据讯息
  3. 从Firebase控制台发送的邮件是通知邮件。要在onMessageReceived()中获取消息,请使用数据消息。使用服务器端的以下代码发送数据通知消息

    {
       "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
       "data" : {
         "Nick" : "Mario",
         "body" : "great match!",
         "Room" : "PortugalVSDenmark"
       },
     }
    

    参考https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages

答案 2 :(得分:0)

当您的应用关闭或在后台运行时,您的代码永远不会被触发。请参阅:Firebase Notification

您需要做的是检查应用的启动方式,点按通知或点按启动器图标。为此,应将一些数据添加到通知中,然后在应用程序的第一个启动活动中检索它们。如果您可以成功检索它们,则表示您的应用是通过点按通知启动的,然后您可以执行您想要执行的操作。