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

时间:2018-11-13 11:18:14

标签: android firebase firebase-cloud-messaging

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

编辑 我尝试设置了notification_id,但它不起作用。

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

@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 

编辑: 我将其转换为数据有效载荷并编辑了通知标题,以便能够切换以上编辑

3 个答案:

答案 0 :(得分:1)

创建notification_key,它通过将特定组(通常是用户)映射到该组的所有关联注册令牌来标识设备组。您可以在应用服务器或Android客户端应用上创建通知键。

请检查此链接 https://firebase.google.com/docs/cloud-messaging/android/device-group

答案 1 :(得分:1)

我通过在标题上执行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;
        }
    }

答案 2 :(得分:0)

回答标题中的问题:FCM from multiple senders but within the same app

如果sender == Firebase Project,那么我认为不可能。

如果sender == a client inside the same Firebase Project(例如iOS应用,多个服务器,另一个Android应用),则需要在Firebase Project中创建这些应用(对于iOS和Android应用),并使用服务器密钥(对于服务器) )

如果sender == function(例如“更新实体A”,“显示促销通知”等),则可以使用通知中的data字段。我们通常在action字段内添加一个data字段。 receiver(iOS或Android应用程序)和sender(通常是服务器,但也可以是移动应用程序)都知道可能的action的列表。 Receiver个用户知道收到它们后该怎么做(如果应用程序收到“更新实体A”,则它将启动EntityAUpdateService)。