Firebase FCM数据消息:需要发送JSON数组代替字符串值
根据firebace文档,我们可以以以下格式发送FCM数据消息:Firebase FCM数据消息:需要发送JSON数组代替字符串值,firebase,firebase-cloud-messaging,Firebase,Firebase Cloud Messaging,根据firebace文档,我们可以以以下格式发送FCM数据消息: { "message":{ "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMEFQ3P1...", "data":{ "Nick" : "Mario", "body" : "great match!", "Room" : "PortugalVSDenmark" } } } 但是,我需要以JSON数组的形式发送数据,如下所示: { "message":{ "token":"bk3RN
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMEFQ3P1...",
"data":{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
}
}
}
但是,我需要以JSON数组的形式发送数据,如下所示:
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoIZvvDMExUdFQ3P1...",
"data":{
"geofence":[{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
},
{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
}]
}
}
}
如果我尝试在请求正文中发送JSON数组以发送消息,则会出现以下错误:
无法向Firebase发送消息:
{ "error":
{ "code": 400,
"message": "Invalid value at 'message.data[0].value' (Map), Cannot have repeated items ('geofence') within a map.\nInvalid JSON payload received. Unknown name \"\" at 'message.data[0].value': Proto fields must have a name.",
"status": "INVALID_ARGUMENT",
"details": [ { "@type": "type.googleapis.com/google.rpc.BadRequest", "fieldViolations": [ { "field": "message.data[0].value", "description": "Invalid value at 'message.data[0].value' (Map), Cannot have repeated items ('geofence') within a map." }, { "field": "message.data[0].value", "description": "Invalid JSON payload received. Unknown name \"\" at 'message.data[0].value': Proto fields must have a name." } ] } ]
}}
Android代码需要JSON数组格式的数据,而不是字符串格式的数据。我在这里受了重伤
非常感谢您的帮助。数据有效负载中的值必须是字符串。不能有数组或对象。你的地理围栏是一个阵列
您可以从Android API中看到,返回类型为
Map
,这意味着您只能有字符串值。您还可以在中看到,数据负载是映射到字符串值的字符串键。因此,您必须找到一种将数据展平为字符串的方法。您确定该错误与您发送的负载匹配吗?该错误提到了重复的“地理围栏”项目,但您的有效负载根本没有提到这些。@DougStevenson Geopfence是自定义密钥,没有其他内容。我已经更正了JSON密钥。@SSingh我得到了解决方案:希望它能帮助你:你是对的。现在我已将JSONArray作为字符串发送,并成功地将数据发送到android设备。@SSingh您是如何解决的?给你