0

发现从Firebase控制台发送通知后,如果应用程序在后台,则不会调用onMessageReceived()方法。未从http请求调用Firebase onMessageReceived()

因此,我遵循人们的建议使用HTTP POST请求。 我已经使用邮递员使POST请求

https://fcm.googleapis.com/fcm/send

用2头:

内容类型:应用/ JSON

授权:键= ALSA ...... .6ryLiI

和身体

{ 
"to" : "fzgh-aHiOd8:APA91bFcKuwuVq_2gbLydHkAZf9XLUzm9vPalh7EUQT3Kyj8mcW9raAs9QvxbHaGJ4-U4RnUJwJ3UaEarbMXiQ8rHnsx9UuYBDrOI9tJYB78_Z3VVR1l7H_6PGpCkdgINx8a4vvMXD9q", 
"notification" : { 
    "body" : "Sales!", 
    "title" : "ID Phone", 
    "icon" : "myicon" 
}, 
"data" : { 
    "data" : "sales", 

} 

}

现在,通知确实进入我的应用程序(这很好),但它仍然不是我想要的自定义通知。即onMessageReceived()仍然没有被调用。

有什么我失踪?

+0

检查是否收到数据。因为您的注册人ID或服务器API密钥可能不正确 – Killer

+0

正在接收数据。但仍然没有工作。谢谢 – RJB

+0

当您发送通知消息并且您的应用程序位于后台时,通知托盘中将显示通知。你的应用程序的'onMessageReceived'不会被调用。这是预期的行为。请参阅http://stackoverflow.com/questions/37711082/how-to-handle-notification-when-app-in-background-in-firebase –

回答

2

您应该定义一个数据有效载荷以在onmessagereceived()中获取消息。通知标签仅用于通知。

从GCM documentation看到这个:

数据消息与您的自定义键/值对

组数据到数据有效载荷发送到 客户端应用程序。数据消息可以具有最大4KB的有效载荷。

例如,这里是在同一IM 应用如上的JSON格式消息,所述信息被封装在数据 和客户端应用程序预期解释内容:

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

编辑

替换这些

Content-Type - application/json 
Authorization - key=ALsa.......6ryLiI 

Content-Type:application/json 
Authorization:key=ALsa.......6ryLiI 
+0

我发现了另一个错误,并编辑了我的答案。 – uguboz

+0

谢谢,帮了我很多。标记为已接受 – RJB