我正在构建一个应用程序,并决定使用Firebase的云消息传递。我的问题是我不知道如何处理收到的通知数据。据我所知,当您从后台打开通知时,您会注意到启动器活动中从服务器发送的数据。因此,我的启动器活动中包含以下内容:
Intent intentOpen;
String message = getIntent().getStringExtra("message");
if(message != null) {
intentOpen = new Intent(this, MainActivity.class);
if (message.equals(this.getResources().getString(R.string.new_shared_file))) {
intentOpen.putExtra(MainActivity.nType, "SHARING");
} else {
intentOpen.putExtra(MainActivity.nType, "SERVICES");
}
}
}
在我的主要活动中,我想获取nType以确定应打开应用程序的片段:
public static String nType = "notification_type";
if (getIntent().hasExtra(nType)) {
String notification = getIntent().getStringExtra(nType);
if (notification.equals("SHARING")) {
displayView(R.id.nav_shared_files);
} else {
displayView(R.id.nav_account);
}
} else if (savedInstanceState == null) {
displayView(R.id.nav_online_files);
}
那么我如何将String传递到主要活动(在另外两个活动之后到达该活动)。还是有其他方法(例如从服务器端)将String转到主要活动?
非常感谢您的回答。
答案 0 :(得分:2)
例如,可以确保使用实例创建枚举类:
public enum DataManager {
INSTANCE;
private String data;
public void setData(String data) {
this.data = data;
}
public String getData() {
return data;
}
}
因此,在第一个活动中,当您获取数据时,就会调用:
DataManager.INSTANCE.setData("whateverdata");
在活动中,您只需要调用数据:
String savedData = DataManager.INSTANCE.getData();
答案 1 :(得分:1)
在启动器活动中,如果您从控制台发送消息作为Firebase控制台中的其他归档选项,则会收到以下消息:
关于图像,您将获得图像作为自定义数据字段,否则您将不会收到消息。如果您的应用程序位于前台,则可以通过FirebaseNotificationService中的onReceiveMessage方法获取通知数据。
Intent intentOpen; 字符串图像= getIntent()。getStringExtra(“ image”); //或imageUrl
将数据发送到其他活动必须通过意图参数完成,如果要这样,则在开始下一个活动时,应始终放置需要意图的任何参数。当然,您可以选择其他方式将数据传递给其他活动。