FCM,如何允许来自API的消息以及如何避免来自控制台

时间:2019-03-26 11:28:39

标签: android firebase firebase-cloud-messaging

FCM消息可以从控制台并使用api推送

从控制台(https://console.firebase.google.com

使用api(https://fcm.googleapis.com/fcm/send

在这两种情况下,当应用程序位于前景中时,都会在扩展FirebaseMessagingService的服务中收到消息,在onMessageReceived中,我们可以按捆绑包中的自定义参数过滤请求,但是当应用程序位于 background < / strong>,然后从控制台发送消息,不调用接收者,并且以某种方式添加了推送消息。

可以处理此请求吗?

3 个答案:

答案 0 :(得分:0)

当应用程序处于后台并且您想通过控制台触发通知时,通知将进入通知托盘,而不是进入服务。

这将在准则中提及。

  

https://firebase.google.com/docs/cloud-messaging/android/receive

因此,如果您仍要处理通知,则必须为其设置适当的有效负载。这样,只要用户单击通知,它就会做出相应的反应。

要禁用通知,请尝试以下操作

FirebaseInstanceId.getInstance().deleteInstanceId();

答案 1 :(得分:0)

Firebase Cloud Messaging支持两个types of messages

  
      
  • 通知消息,有时被称为“显示消息”。 [当应用程序不活动时],这些将由FCM SDK自动处理。

  •   
  • 数据消息,由客户端应用处理。

  •   

Firebase控制台始终发送通知消息,这些消息由系统处理(当应用程序不活动时)。在这种情况下,无法拦截这些消息。

如果您希望始终在应用程序代码中接收到该消息,则应使用一条只能通过API发送的数据消息。

答案 2 :(得分:-1)

是的,当应用程序处于前台/后台时,可以处理消息。在这两种情况下,都可以通过实现onMessageReceived来处理它。唯一的区别是,您必须在您的JSON消息中放入dataHere,您可以找到更多。

@Override
public void onMessageReceived(RemoteMessage remoteMessage) { 
   Map<String, String> data = remoteMessage.getData();
   String myKey = data.get("myKey");
}