繁体   English   中英

Android FCM-在后台未调用onMessageReceived

[英]Android FCM - onMessageReceived not called on background

我正在使用FCM。 通知工作正常,并且在前台上调用onMessageReceived,但是当我在应用程序处于后台/终止状态时收到通知时,永远不会调用该方法。

我正在按照Firebase文档的建议使用数据消息,但没有成功...

FCM有3种通知

1.通知消息 Json正文将仅具有notification标签,如果应用程序在后台,FCM将在客户端应用程序中自动显示通知。 onMessageReceived()将在前台同时调用。 在后台,不会调用onMessageReceived()

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}

2.数据消息 Json正文将仅具有data标签开发人员必须显示通知。 onMessageRecieved将在前台和后台都被调用。 json应该只包含数据标签

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

3.通知和数据消息

json主体将同时具有notificationdata标签。 仅当应用程序处于前台状态时,才会调用onMessageReceived() 如果应用程序在后台并且不会调用onMessageReceived(),则通知将自动显示。

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

有关更多信息,请阅读https://firebase.google.com/docs/cloud-messaging/concept-options

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

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

这是我发送的通知:

 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM