FCM 主题最大有效负载大小

FCM Topics Max Payload Size

我正在将 firebase 消息传递集成到我的系统中,但我在发送消息时遇到了问题。

文档说:

A notification message is the more lightweight option, with a 2KB limit and a predefined set of user-visible keys. Data messages let developers send up to 4KB of custom key-value pairs. Notification messages can contain an optional data payload that is delivered when users tap on the notification.

但是我无法以任何方式在我的数据消息中发送 4kb 的数据。 这是我的 curl 命令

curl -XPOST -H 'Authorization: key=my_server_key' -H "Content-type: application/json" -d '{
    "to": "/topics/my_test_topic",
    "data": {
        "k" : "bdbe6af06a70f2769e3051de4855612938b7455393fa6f4e08b87635a944250607f4fbdd0dee1900ca1351ffc70ecd287cf41c7a0416361ec8e7001bc8bbd1aa908d3331f5128fc721f58d51be5400656534a01758ccc249d78636de7ea0eedba2a0081b52de36968654cb8a8cc32e3524460ad841ff9b1b9b442c5b8add2dfd3423112ba570483ead04027a4e7cb3a15a5732bc150c4186170e9845b1199d08a0380268e94b920112ec98d757d0e6bce8be3dd571e61cc5ca9dd7d0214e5272423d918debb590929a0598048e9741363ee999b0939d32ab6c9800e227b1239c4193d98bf3776b87656cc814ec706fe6b63cd608187e4ed3888a87939f791cc2f699ae09cd582f42b6c0ebeeae964082ed0efabcfb25c24bc25f2357849529158c718c6d7710b0011374c4da648808462f85161cf14c3448e46b393a1f496d752aa4b462a6f0769d3acbfe23581156df722ada2eda0ae2da600c4d1990a6c46e748d8f9bcf42d36f47bac67c00988e0b0b897a01dbe67184d714efbd464be0ddee64dd68e155cfd28fa3e01be428d407632521acf73789907f4e45723ce22ad9ab68b7d3bd49f1dad2d73ae749131dc83722ce84e66aa53d115a0dbea00e0490fc555ddd79ecffc32f9a9a786b0f590a332f1828f8ecd830689cf778e1529e3d8724e4d7a5d8baa3e151bfe51aea15f69615ad3a85d05199b4401370f6af778159ed6c953036b500a202e61eb5637455aa19703dea4f9a5bb4cee795901037d0dab3f02c46d28b2da4e409c16896ae2f0512cfa11e1c997d3b0ed3f04a956b2d2af9e95b86fb46f600ea5a807ace3d887f58b65820bebb861e4139289bd72a99ee8141e58895357c86f481f343659965c84d1fa9533edc038e569d6a6ca09ed3a0b2fbc5097aee22ac4428acec1373744f6867cfbbcf2a17ecceba9fc72d0fc39e5fafe960de0aa069bf6f78308e9e4067b381a454e2032bc0744d504a52010bed05418485bb72453a27751cc7c0f7bd98ae4c3abc20f43502c94ceea8b10b099835d16ffd9499239029ee73d9669e9b812c8c72d91b8499ccf2e2430092ead466358e4f8ad024f06408d35e69a62bb30bcc2fe36ce48a0a9e3ae1654034ecbdc57500b41d2b779be7c64c4278d63360f9f9915fd89ee154c59b76bafee358ab2821111992b52ed07d7ec1e493e09c41fb4b7ff216e4e8ad502217de35804caa5842aed1d7e6ec7083cb1a851ff66a843de51a839546c5f05b4185b524969b857dab42709816639920356069212c976ccfb4e658826cecb3440372422148ef723cf7c6ed232621dafae5dddaa223a46797a04fece4a43166b824540f04372b88ed7e5012c8468225c51f75dc81e2ff2befe2a18ea03e781e144c84328b13d08010a2b6d06bfb84d7d6a1f1a48d1d824491e63c49a4a6c54cc4e03d8c66a9d2d85dce23026dfae30a2b27a2f151399b74abeecb039310d6969a355a9592b034d64b403294ada49c15f5afc55ffe1d7252d256d03f0e2cf4fb24f7d409fb4eaae87412154cce8a6b8ae7be5940713b9702a35d430e89c189b9cfe10dafa048a2386d6bd56a135188d2418bcef0f0fdbc939454a54793fde1aa08bdebe888b5ecf3cc63156859d8c1f4d020c07671e23b36cd2e758c0eb44b4c566a41e16ff97f1afa030fd5231f80455ed4582912925e93e2b5976f462035723b0f2067bdeeb75c9841209722038ded3803fb59cd2256b9e92bbe287f7cc1cb293766404224e7455ac21636d38a476bcfddd0df294eddba410cdf22c092fcdd265d202ef39491d52d0456f91df5a0d81ea81693375772a8b499a3c5e0c4e0a56deae36850a123778bfe6656af98233a306e761eda451affa0a73959f16a5617a4f28b14e8f7bd547ab71ca377bc6536312792bd90a80c7e5d56a6b9e1354a9f3dc218de2460496262496f937b8b4c2e6df1bcbecd785585675dc43f4930999dc58c9046c618e46d5d6de5cf47ab6e738d9c5e8e1bc0c2a85b20066b91af70baf8cd8c42c5a1725c741a2422019c93864b1f1d8c513e43af29d08e844e2a1dfbc85bbeac6d7d5c4403dc2360b229be2c69618fced70250f2df8e9adf8573777a6f37724a8255f5afaa23cf75274e5a88664a707fbf4548d4cb21146f3d85e8a2964310ccb0685d5df3c26980e258073f06726a3e45f26b4c26c958a5abd1b47c762f814c4d930a5ee74b979e8b3bd9e604676c375343dbe17ca90bad451f5b2b890b8aa0f8f82585649ec5d13c3994df2313139490c4856be50c514da25e8bdd41d36a3089f2d38d508447b21d04103879a83e06ced0a72a344eef061990406555d7ee2dd852959272b3b43ed0f300bb9c54efb7f45aaa6813cd86593ea53aab4382cd893b34b62cf53a69d58000e94e2f83164c3d38290a675168065ead1fed84"
     }
}' 'https://fcm.googleapis.com/fcm/send'

字符串的大小为 3098 字节,密钥只有一个,因此消息的总大小应小于 4kb,但这是我作为响应收到的有效载荷

{"error":"MessageTooBig"}

我可以设法发送此消息的唯一方法是使用设备注册 ID 作为收件人而不是主题,但我无法在文档中的任何地方找到说明您只能将 4k 数据发送到单一设备而不是主题。

有人可以向我解释一下这种行为吗?

这是预期的行为。通过主题发送的消息有其自己的 2KB 负载大小限制。来自 GCM Docs(强调我的):

The app server sends messages with payloads up to 2KB to the topic, and GCM handles the message routing and delivers the message reliably to the right devices.

我链接了 GCM 文档,因为它在那里记录,但由于 FCM 只是 运行 GCM 的核心,它仍然适用。