如果您查看documentation,您会发现 Android 处理通知消息的方式不同,具体取决于负载以及您的应用是在前台还是后台:
如果您的应用位于前台,您将始终在onMessageReceived 方法中收到通知。通知的有效负载无关紧要。
如果它位于背景,您有两种情况:
通知负载:
消息被传递到系统托盘,当您单击它时,它将通过 Intent Extras 传递到 Launch Activity。
数据负载:
消息将发送至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 Extra 中的通知:
Bundle extras = getIntent().getExtras();
if(extras!=null){
String notification = extras.getString("notification");
String dats = extras.getString("data");
}
请注意,如果您使用的是 android O,您还需要配置 channels。