如何在应用内获取Firebase云消息,而不是推送通知

时间:2018-06-08 16:34:42

标签: android firebase notifications firebase-cloud-messaging

我有一个带有工作firebase云消息传递的Android应用程序,每次有新消息到达时都会有Push通知。我不想要这个推送通知我想在应用程序中查看此通知,就像在facebook这么多社交应用程序中一样。我已经实现了通知计数器但是如何添加这样的视图?

enter image description here

我明天就一直在寻找这个,但我没有得到答案,是否有可能在我的Android应用程序中获取Firebase消息?

2 个答案:

答案 0 :(得分:0)

试试吧

import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

public final class MyFirebaseMessagingService extends FirebaseMessagingService {
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
        //storage messages here
    }
}

然后在你的AndroidManifest.xml上

 <service android:name=".MyFirebaseMessagingService">
 <intent-filter>
     <action android:name="com.google.firebase.MESSAGING_EVENT" />
 </intent-filter>

关于 FirebaseMessagingService

  

扩展此类需要能够处理下游消息。它还提供自动显示通知的功能,并具有调用以提供上游消息状态的方法。

     

覆盖基类方法以处理应用程序所需的任何事件。在后台线程上调用方法。

答案 1 :(得分:0)

我们使用Firebase RTDB,FCM和云功能做了类似的事情。基本上,我们的想法是将数据添加到与用户对应的节点下的数据库中,如下所示:

/notifications
  /$userId
    /$notificationId
      /detail1:..
      /detail2:..

然后实施Database Trigger以触发推送通知。但是,您想要的是不发送推送通知,因此您可以跳过FCM和云功能部分。只需专注于使用Firebase RTDB。

这是我能想到的最好的方法来实现你想要的行为。但是,如果您的目标只是捕获通知,则必须为FCM实施仅data - 仅有效负载,然后在onMessageReceived()中,将消息详细信息存储在您的应用稍后可以获得的位置。