Java 如何使用FCM管理聊天应用程序的推送通知

Java 如何使用FCM管理聊天应用程序的推送通知,java,android,firebase-cloud-messaging,android-service,Java,Android,Firebase Cloud Messaging,Android Service,我正在开发一个聊天应用程序,可以推送facebook、Instagram等通知。 当用户发送消息时,将自动显示通知。问题是我不知道如何处理后台服务 例如,当同一用户发送消息时,通知将如下所示附加消息: 但当FCM发送通知时,发生了以下情况: 我需要能够处理后台服务 这是我的密码 public class FirebaseInstaceService extends FirebaseMessagingService { FirebaseToken firebaseToken = new Fir

我正在开发一个聊天应用程序,可以推送facebook、Instagram等通知。 当用户发送消息时,将自动显示通知。问题是我不知道如何处理后台服务

例如,当同一用户发送消息时,通知将如下所示附加消息:

但当FCM发送通知时,发生了以下情况:

我需要能够处理后台服务

这是我的密码

public class FirebaseInstaceService extends FirebaseMessagingService {


FirebaseToken firebaseToken = new FirebaseToken();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

@Override
public void onNewToken(String s) {
    super.onNewToken(s);
    Log.d("NewToken","New token: " +s);

    if (user != null){
        firebaseToken.sendToken(s, new OncompleteCallback() {
            @Override
            public void callback() {
                Log.d("NewToken","Send complete");
            }
        });
    }
}

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);
    try {
        Log.d("CloudMessage",remoteMessage.getNotification().getBody());
    }catch (Exception e){
        Log.d("CloudMessage",e.toString());
        throw e;
    }
  }
}

如果我正确理解了您的问题,那么在收到推送通知时,您需要在非UI线程上进行工作。在这种情况下,您很幸运——正如所解释的,onReceive是在非UI线程上调用的


您只需创建并显示您认为合适的通知,以唯一方式存储通知ID,从而允许用户->通知映射。这样,当同一用户发送另一条消息时,您可以访问显示的通知。

不清楚“处理后台服务”是什么意思。你能解释一下吗正如你在上图中所看到的,FCM使用后台服务自动创建推送通知,所以我对此无能为力。例如,当同一用户发送消息时,我需要将消息附加到同一通知中,但后台服务会自动创建一个新的通知。它的默认行为是FCM,这取决于您在推送负载中发送的数据。如果有效负载中有数据密钥,则将始终调用onMessageReceived。谢谢,我知道,但问题是当应用程序关闭时,OnReceive内部的函数将无法以这种方式工作,我需要一个解决方案