【问题标题】:How to manage push notification for chat app using FCM如何使用 FCM 管理聊天应用程序的推送通知
【发布时间】:2019-08-11 15:26:06
【问题描述】:

我正在构建一个推送通知的聊天应用程序,例如 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;
    }
  }
}

【问题讨论】:

  • 不清楚handle background service 是什么意思。你能解释一下吗
  • 如上图所示,FCM 使用后台服务自动创建推送通知,所以我对此无能为力。例如,当同一个用户发送消息时,我需要在同一个通知中附加一条消息,但后台服务会自动创建一个新的,谢谢
  • FCM 的默认行为取决于您在推送负载中发送的数据。如果您在有效负载中有数据密钥,则始终会调用 onMessageReceived。 firebase.google.com/docs/cloud-messaging/…

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


【解决方案1】:

如果我正确理解您的问题,您需要在收到推送通知时处理非 UI 线程。在这种情况下,你很幸运 - 正如 here 所解释的那样,onReceive() 是在非 UI 线程上调用的。

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

【讨论】:

  • 谢谢,我知道,但问题是当应用程序关闭时,OnReceive 中的函数将无法正常工作,我需要一个解决方案
猜你喜欢
  • 2018-11-14
  • 1970-01-01
  • 2021-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多