对不起我的头衔,但让我解释一下。 我在我的应用上使用firebase云消息。现在,在触摸通知后,我需要运行应用程序,然后在应用程序未运行或在后台时显示对话框包含通知正文和标题。
默认情况下,FCM是指应用程序未在后台运行时,我会触摸通知,然后运行应用程序/转到前台。
任何人都可以指导我处理它吗?
答案 0 :(得分:1)
处理背景应用中的通知消息
当您的应用在后台时,Android会将通知消息定向到系统托盘。用户点按通知会默认打开应用启动器。
这包括包含通知和数据有效负载的消息(以及从通知控制台发送的所有消息)。在这些情况下,通知会传送到设备的系统托盘,而数据有效负载会以启动器活动的意图附加内容的形式发送。
当您发送带有数据有效负载(通知和数据)的通知消息并且应用程序位于后台时,您可以从用户点击通知而启动的意图的附加内容中检索数据。
点击通知后,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");
因此,您可以从地图获取数据。