我有一个Android应用程序,它调用Web服务向我们发送消息以获得支持。
我们开发了一个可以回复邮件的网站,我们使用Firebase。到目前为止,我们只是发送了一个标题和一条消息:
var applicationID = "snip";
var senderId = "snip";
WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
tRequest.Method = "post";
tRequest.ContentType = "application/json";
var data = new
{
to = model.RequestFirebaseID,
notification = new
{
body = model.ResponseMessage,
title = model.ResponseTitle
}
};
在Android应用中,我可以使用以下Java代码
提取消息标题String notificationTitle = remoteMessage.getNotification().getTitle();
String notificationBody = remoteMessage.getNotification().getBody();
但是现在我正在尝试发回一个名为id的自定义字段,因此我将代码修改为
var data = new
{
to = model.RequestFirebaseID,
notification = new
{
body = model.ResponseMessage,
title = model.ResponseTitle,
requestid = model.id
}
};
所以现在当我使用Firebase向设备发送消息时,我有这个代码尝试读取id字段。
String messageID = remoteMessage.getData().get("requestid");
然而,这导致最终为空。
所以我尝试通过Firebase控制台测试发送,我将requestid添加到自定义数据部分并给它一个值,上面的代码能够读取它。
似乎当我通过Web应用程序发送时,它无法看到requestid字段。
答案 0 :(得分:2)
您必须在有效负载内包含data
消息。像这样:
var payload = new
{
to = model.RequestFirebaseID,
notification = new
{
body = model.ResponseMessage,
title = model.ResponseTitle
},
data = new
{
requestid = model.id
}
};
我将根变量名称更改为payload
以区分它。
如果您在使用Firebase Notifications控制台发送消息时添加自定义数据,则会将其包含在data
消息参数中,而不是notification
消息中。有关两者的区别,请参阅Message Types文档。