Firebase通知错误

时间:2018-03-23 15:01:52

标签: android firebase firebase-notifications

我正在尝试向Firebase发送通知。但是,在某些情况下,通知不会调用onReceive方法。 Foregound =呼叫和导航。 后台和Kill App = onReceive未调用。我无法获取数据而不能重定向。

https://gist.github.com/Omurtekinn/fcbd3ba2e83925c459b22d5614c3ea00 MyFirebaseMessaging类。

baslik=title / özel veriler= data

1 个答案:

答案 0 :(得分:0)

如果您检查documentation,您会看到Android处理通知消息的方式会有所不同,具体取决于有效负载以及您的应用是否在前台或后台:

如果您的应用位于前景,您将始终使用onMessageReceived方法接收通知。无论通知的有效负载如何。

如果它位于背景,您有两种情况:

通知有效负载: 消息将传递到系统托盘,当您单击它时,它将通过附加内容传递到启动活动。

数据有效负载: 邮件将发送至onMessageReceived

查看您的方案,您似乎有一个通知有效负载。您有两种选择:

1)将有效负载类型更改为数据。如果您正在使用FCM控制台,则只能执行选项2,因为它只会发送通知消息。

2)在启动器活动onCreate方法中实现消息的接收。

通知基本上如下:

 {
    "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification" : {
      "body" : "great match!",
      "title" : "Portugal vs. Denmark",
      "icon" : "myicon"
    }
  }

如果您要添加键/值对,它将如下所示:

 {
    "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
    "notification" : {
      "body" : "great match!",
      "title" : "Portugal vs. Denmark",
      "icon" : "myicon"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }

在您的启动器活动中,您可以像onCreate()中的任何其他活动一样在intent extras中收到通知:

  Bundle extras = getIntent().getExtras();
  if(extras!=null){
    String notification = extras.getString("notification");
    String dats = extras.getString("data");
  }

请注意,如果您使用的是Android O,则还需要配置channels