Android 来自多个发件人但在同一应用程序中的FCM

Android 来自多个发件人但在同一应用程序中的FCM,android,firebase,firebase-cloud-messaging,Android,Firebase,Firebase Cloud Messaging,使用FCM发送多个通知,但在同一服务器端,表示存在多种通知类型,可能具有不同的数据有效负载和不同的通知标题,我希望通知管理器能够区分客户端上的每个通知,并将它们发送到不同的通知通道 编辑 我尝试设置通知id,但它不起作用 编辑: 我可以添加一个数据负载,并将通知限制在我的一个类中,还可以添加一个switch语句,该语句将根据我的通知进行划分,但我需要在后台而不是前台处理数据 @Override public void onMessageReceived(RemoteMessage rem

使用FCM发送多个通知,但在同一服务器端,表示存在多种通知类型,可能具有不同的数据有效负载和不同的通知标题,我希望通知管理器能够区分客户端上的每个通知,并将它们发送到不同的
通知通道

编辑 我尝试设置通知id,但它不起作用

编辑: 我可以添加一个数据负载,并将通知限制在我的一个类中,还可以添加一个switch语句,该语句将根据我的通知进行划分,但我需要在后台而不是前台处理数据

@Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
        notificationSwitch(remoteMessage);
    }

    private void notificationSwitch(RemoteMessage remoteMessage) {
        RemoteMessage.Notification notification = remoteMessage.getNotification();

        if (notification.getTitle().equals("TypeOne")){
            TypeOneSendNotification(remoteMessage);
        }
        else{
            TypeTwosendNotification(remoteMessage);
        }

    }


 //Ofcourse we are able to switch based on the title, or different data payloads 
编辑:
我转换为数据有效负载并编辑了通知标题,以便能够切换上述编辑创建通知密钥,该密钥通过将特定组(通常是用户)映射到组的所有关联注册令牌来标识设备组。您可以在应用程序服务器或Android客户端应用程序上创建通知密钥

请检查此链接

回答标题中的问题:
来自多个发件人但在同一应用程序中的FCM

如果
sender==Firebase项目
,那么我认为这是不可能的

如果
sender==同一Firebase项目内的客户端(如iOS应用程序、多台服务器、另一个Android应用程序),则需要在Firebase项目内创建这些应用程序(对于iOS和Android应用程序)并使用服务器密钥(对于服务器)


如果
sender==function
(如“更新实体A”、“显示促销通知”等),则可以使用通知中的
数据
字段。我们通常在
数据
字段中添加
操作
字段。
接收者
(iOS或Android应用程序)和
发送者
(通常是服务器,但也可以是移动应用程序)都知道可能的
操作列表
Receiver
s知道当他们收到它们时该做什么(如果应用程序收到“更新实体A”,那么它将启动EntityAuUpdate服务)。

我通过在标题上实现一个switch语句来实现这一点,这只是一个小技巧,但它确实有效

@Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
            super.onMessageReceived(remoteMessage);
            notificationSwitch(remoteMessage);
    }
在我的通知开关函数中,因为我已经将remoteMessage作为参数,所以我将只实现我的发送者

private void notificationSwitch(RemoteMessage remoteMessage) {
        RemoteMessage.Notification notification = remoteMessage.getNotification();

      if(notification.getTitle() != null){
        switch (notification.getTitle()) {
            case "SenderOne":
                SenderOneSendNotification(remoteMessage);
                break;
            case "SenderTwo":
                SenderTwoSendNotification(remoteMessage);
                break;
            case "SenderThree":
                SenderThreeSendNotification(remoteMessage);
                break;
            case "SenderFour":
                SenderFourSendNotificaation(remoteMessage);
                break;
            default:
                DefaultSender(remoteMessage);
                break;
        }
    }

我不想向多个设备发送一个通知。。。我想从同一应用程序中的不同发件人向单个设备发送多个通知。。。。感谢您的尝试。当您定义通知密钥时,您可以为单个设备分配该密钥,并仅向具有该密钥的单个设备发送多个通知是,但您仍限制为一个应用,如果我分配了一个通知密钥,则只会从同一应用调用具有密钥的通知,我想为同一应用定义多个发件人…是否希望N个发件人为1个设备?在同一应用中,是。因此,如果(x发生)发送通知x,如果(y发生)发送通知y,客户端应用程序可以接收x和y,我如何区分x和y?我做了类似的事情,但在另一个方向上,N个设备有1个发送者。我所做的是创建一个firebase函数,从一个集合中读取、插入不同的消息。该函数将读取消息数据,如发送者、接收者、事件、消息,以及您想要的一切。在我的例子中,它读取来自1个发送者的消息,并为订阅给他的所有设备触发FCM,一些代码: