如何通过fcm停止后台自动生成的通知?

时间:2017-12-14 13:14:09

标签: android push-notification

当前景 onMessageReceived 中的应用程序返回数据时,但背景中的应用程序 onMessageReceived 不会返回任何内容。 FCM将在后台或终止模式下应用时生成自动通知 我想停止自动生成的通知。

这是我的示例代码:

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    Log.e(TAG, "onMessageReceived: " + remoteMessage);
    Log.e(TAG, "onMessageReceived: " + remoteMessage.getFrom());
    Log.e(TAG, "onMessageReceived Message Body: " + remoteMessage.getNotification().getBody());
    handleNow(remoteMessage);
}

2 个答案:

答案 0 :(得分:2)

使用FCM,您可以向客户端发送两种类型的消息:

1. 通知消息 - 有时被视为“显示消息”。这些由FCM SDK自动处理。

2. 数据消息 - 由客户端应用处理。

  

当应用在后台时,通知消息将传递到通知托盘。对于前台的应用程序,消息由onMessageReceived()处理:

因此,如果您使用的是高优先级消息的通知消息,如果您的应用程序处于后台,则不会在onMessageReceived()中获得回调。请改用数据信息

关注Documentation

您的数据信息应如下所示。

{
 "message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data":{
  "Nick" : "Mario",
  "body" : "great match!",
  "Room" : "PortugalVSDenmark"
  }
 }
 }

答案 1 :(得分:2)

使用过的通知托盘,它将在那时调用你的onMessageReceived()方法。

请查看以下链接,这对您有帮助。

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

请将数据标记添加到您的json响应中,如下所示:

  {
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }
}

希望这会对你有所帮助。