处理背景通知

问题描述 投票:2回答:2

我正在构建一个应用程序并决定使用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转换为主要活动?

感谢您提前的答案。

android firebase push-notification notifications firebase-cloud-messaging
2个回答
1
投票

在您的启动器活动中,如果您从控制台发送消息作为firebase控制台中的附加提交选项,您将收到类似这样的消息:enter image description here

关于图像显示,您将图像作为自定义数据字段,否则您将无法获得消息。如果您的应用程序位于前台,您将在FirebaseNotificationService内的方法onReceiveMessage中获取通知数据。

意图打开; String image = getIntent()。getStringExtra(“image”); //或imageUrl

将数据发送到其他活动必须通过intent参数完成,如果你想这样做,你应该总是在开始下一个活动时提出你需要的任何参数。当然,您可以选择其他方式将数据传递给其他活动。


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();
© www.soinside.com 2019 - 2024. All rights reserved.