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

时间:2019-08-11 15:26:06

标签: java android firebase-cloud-messaging android-service

我正在构建一个聊天应用程序,用于推送诸如Facebook,Instagram之类的通知。 当用户发送消息时,通知将自动显示。问题是我不知道如何处理后台服务。

例如,当同一用户发送消息时,将有如下通知添加消息:

Image Notificaiton

但是当FCM发送通知时,就是这样:

My notification

我需要能够处理后台服务

这是我的代码

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;
    }
  }
}

1 个答案:

答案 0 :(得分:1)

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

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