我正在尝试向Firebase发送通知。但是,在某些情况下,通知不会调用onReceive方法。 Foregound =呼叫和导航。 后台和Kill App = onReceive未调用。我无法获取数据而不能重定向。
https://gist.github.com/Omurtekinn/fcbd3ba2e83925c459b22d5614c3ea00 MyFirebaseMessaging类。
答案 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。