在后台应用中处理通知消息
当您的应用处于后台时,Android 会将通知消息定向到系统托盘。默认情况下,用户点击通知会打开应用启动器。
这包括包含通知和数据负载的消息(以及从通知控制台发送的所有消息)。在这些情况下,通知会发送到设备的系统托盘,并且数据负载会在启动器 Activity 的 Intent 的附加内容中发送。
当您发送带有数据负载(通知和数据)的通知消息并且应用程序在后台时,您可以从由于用户点击通知而启动的额外意图中检索数据。
来自FCM sample,它在点击通知时启动 MainActivity:
if (getIntent().getExtras() != null) {
for (String key : getIntent().getExtras().keySet()) {
String value = getIntent().getExtras().getString(key);
Log.d(TAG, "Key: " + key + " Value: " + value);
}
}
编辑:
在onMessageRecieved(RemoteMessage remoteMessage) 方法中,使用remoteMessage.getData() 获取服务器发送的数据,该数据返回Map<String,String>。
现在创建一个Intent 并指定一个类以在单击通知时启动并在这个意图把你的通知数据。喜欢:
Intent resultIntent = new Intent(getApplicationContext(), MainActivity.class);
resultIntent.putExtra("notification_data", data.getData());
现在,当您显示通知时,将此意图传递给 pendingIntent。
当点击通知启动 MainActivity.class 时,只需获取如下数据:
Map<String,String> notificationDataMap
= getIntent().getSerializableExtra("notification_data");
所以你可以从地图中获取数据。