我正在使用Firebase向我的应用发送推送通知,并希望将一些值保存到共享首选项中。当应用程序处于前台时,它可以完美运行,但当应用程序在后台时,它不会保存值。我的代码如下所示:
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.e("Remotemessage",remoteMessage.toString());
String Heading = remoteMessage.getNotification().getTitle();
String message = remoteMessage.getNotification().getBody();
Map<String, String> data = remoteMessage.getData();
Log.e("Firebase notification ", " KEY1");
sessionManager=new SessionManager(this);
Log.e("Firebase notification ", " KEY"+data.get("click_action"));
Log.e("Firebase notification ", " KEY new"+data.get("key"));
int studentid= Integer.parseInt(data.get("student_id"));
Log.e("STUDENT ID",""+studentid);
if(studentid!=0)
{
sessionManager.saveStudentId(studentid);
}
}
但通知显示了这两种情况。如何解决这个问题??
根据你的帖子,我假设你正在发送一个包含notification
和data
消息的有效负载。有关更多详细信息,请参阅消息类型。
如处理 Android 消息文档所示,当应用程序在后台发送包含两种消息类型的有效负载时,消息(notification
数据(将由 Android 系统托盘处理。
您可以做两件事:
-
发送仅限
data
的消息负载,以便onMessageReceived()
处理消息,而不管你的应用是在前台还是后台。 -
在用户点击 Android 系统托盘中的通知后,实现在
data
有效负载中获取详细信息的处理。在这里看到我的答案。