Android FCM-未在后台调用onMessageReceived

Android FCM-未在后台调用onMessageReceived,android,firebase,notifications,firebase-cloud-messaging,Android,Firebase,Notifications,Firebase Cloud Messaging,我用的是FCM。通知工作正常,前台会调用onMessageReceived,但当我在后台/关闭应用程序时收到通知时,将永远不会调用该方法 我建议使用数据消息作为Firebase文档,但没有成功…您确定要在中添加类似此服务的内容吗 AndroidManifest.xml <service android:name=".services.fcm.FirebaseService"> <intent-filter> <

我用的是FCM。通知工作正常,前台会调用onMessageReceived,但当我在后台/关闭应用程序时收到通知时,将永远不会调用该方法


我建议使用数据消息作为Firebase文档,但没有成功…

您确定要在中添加类似此服务的内容吗 AndroidManifest.xml

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

您确定要在中添加类似此服务的内容吗 AndroidManifest.xml

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

FCM有3种通知

1。通知消息 Json正文将只包含
通知
标记 如果应用程序在后台,FCM将在客户端应用程序中自动显示通知
onMessageReceived()
将在前台同时调用。在后台,
onMessageReceived()
将不会被调用

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}
2。数据消息 Json正文将只包含
数据
标记 开发人员必须显示通知。onMessageRecieved将在前台和后台都被调用。json中应该只有数据标记

 {
      "message":{
        "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
        "data":{
          "Nick" : "Mario",
          "body" : "great match!",
          "Room" : "PortugalVSDenmark"
        }
      }
    }
3。通知和数据消息

json主体将同时具有
通知
数据
标记
onMessageReceived()
仅在应用程序位于前台时调用。如果应用程序位于后台,则会自动显示通知,并且不会调用onMessageReceived()

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

有关更多信息,请阅读FCM有3种通知

1。通知消息 Json正文将只包含
通知
标记 如果应用程序在后台,FCM将在客户端应用程序中自动显示通知
onMessageReceived()
将在前台同时调用。在后台,
onMessageReceived()
将不会被调用

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}
2。数据消息 Json正文将只包含
数据
标记 开发人员必须显示通知。onMessageRecieved将在前台和后台都被调用。json中应该只有数据标记

 {
      "message":{
        "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
        "data":{
          "Nick" : "Mario",
          "body" : "great match!",
          "Room" : "PortugalVSDenmark"
        }
      }
    }
3。通知和数据消息

json主体将同时具有
通知
数据
标记
onMessageReceived()
仅在应用程序位于前台时调用。如果应用程序位于后台,则会自动显示通知,并且不会调用onMessageReceived()

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

有关更多信息,请阅读

这是我发送的通知:

 payload = new JSONObject();
 notification = new JSONObject();

 notification.put("title", "Avisos");
 notification.put("text", "Nuevos avisos disponibles");

 payload.put("data", notification);
 payload.put("to", "/topics/avisos");
 payload.put("priority",10);

这是我要发送的通知:

 payload = new JSONObject();
 notification = new JSONObject();

 notification.put("title", "Avisos");
 notification.put("text", "Nuevos avisos disponibles");

 payload.put("data", notification);
 payload.put("to", "/topics/avisos");
 payload.put("priority",10);

这是我正在发送的通知:`payload=newjsonobject();通知=新的JSONObject();通知。付诸表决(“标题”、“Avisos”);通知。付诸表决(“文本”、“新航争议”);有效载荷。put(“数据”,通知);payload.put(“to”,“/topics/avisos”);有效载荷。put(“优先级”,10)`所以我必须包含一个令牌?如果您正在向一个发送消息,那么您应该使用令牌这是我正在发送的通知:`payload=new JSONObject();通知=新的JSONObject();通知。付诸表决(“标题”、“Avisos”);通知。付诸表决(“文本”、“新航争议”);有效载荷。put(“数据”,通知);payload.put(“to”,“/topics/avisos”);有效载荷。put(“优先级”,10)`所以我必须包括一个令牌?如果你正在向一个发送消息,那么你应该使用令牌这应该在问题中这应该在问题中