Here is an example with one particular message on BlueBubbles Desktop and on my Mac.


Just like on Android, if I receive one message with multiple attachments, only one tapback can be applied to all of those attachments.
Here are some similar tickets. BlueBubbles Android, SMServer, and WebMessage
{
"id": "D3DBDAD8-5EEE-4D72-ADB7-20A74501706D",
"fromMe": true,
"isTypingMessage": false,
"description": "We'll show up and he'll be like",
"flags": 1081349,
"fileTransferIDs": [
"72D48466-A535-4C93-AA78-6791A8AB53F1"
],
"chatID": "chat526745548997352517",
"time": 1615577622383.0002,
"timeRead": 0,
"isSOS": false,
"timeDelivered": 0,
"isAudioMessage": false,
"isCancelTypingMessage": false,
"items": [
{
"type": "attachment",
"payload": {
"metadata": {
"size": {
"width": 500,
"height": 255
},
"id": "72D48466-A535-4C93-AA78-6791A8AB53F1",
"filename": "AE5727AE-29A7-4E84-B537-17AFD35FEB41.gif",
"uti": "com.compuserve.gif",
"mime": "image/gif"
},
"id": "p:0/D3DBDAD8-5EEE-4D72-ADB7-20A74501706D",
"chatID": "chat526745548997352517",
"transferID": "72D48466-A535-4C93-AA78-6791A8AB53F1",
"fromMe": true,
"time": 1615577622383.0002
}
},
{
"type": "text",
"payload": {
"chatID": "chat526745548997352517",
"fromMe": true,
"parts": [
{
"type": "text",
"string": "We'll show up and he'll be like"
}
],
"id": "p:1/D3DBDAD8-5EEE-4D72-ADB7-20A74501706D",
"time": 1615577622383.0002,
"text": "We'll show up and he'll be like",
"acknowledgments": [
{
"chatID": "chat526745548997352517",
"sender": "*my friend's email*",
"associatedID": "p:1/D3DBDAD8-5EEE-4D72-ADB7-20A74501706D",
"id": "am:F0716C13-6871-4286-A4A6-3CF3FB0B25CD",
"fromMe": false,
"time": 1615577636093.2012,
"acknowledgmentType": 2003
}
]
}
}
],
"service": "iMessage",
"timePlayed": 0,
"sender": "e:*my email*",
"isDelivered": false
}
Here is an example with one particular message on BlueBubbles Desktop and on my Mac.


Just like on Android, if I receive one message with multiple attachments, only one tapback can be applied to all of those attachments.
Here are some similar tickets. BlueBubbles Android, SMServer, and WebMessage
{ "id": "D3DBDAD8-5EEE-4D72-ADB7-20A74501706D", "fromMe": true, "isTypingMessage": false, "description": "We'll show up and he'll be like", "flags": 1081349, "fileTransferIDs": [ "72D48466-A535-4C93-AA78-6791A8AB53F1" ], "chatID": "chat526745548997352517", "time": 1615577622383.0002, "timeRead": 0, "isSOS": false, "timeDelivered": 0, "isAudioMessage": false, "isCancelTypingMessage": false, "items": [ { "type": "attachment", "payload": { "metadata": { "size": { "width": 500, "height": 255 }, "id": "72D48466-A535-4C93-AA78-6791A8AB53F1", "filename": "AE5727AE-29A7-4E84-B537-17AFD35FEB41.gif", "uti": "com.compuserve.gif", "mime": "image/gif" }, "id": "p:0/D3DBDAD8-5EEE-4D72-ADB7-20A74501706D", "chatID": "chat526745548997352517", "transferID": "72D48466-A535-4C93-AA78-6791A8AB53F1", "fromMe": true, "time": 1615577622383.0002 } }, { "type": "text", "payload": { "chatID": "chat526745548997352517", "fromMe": true, "parts": [ { "type": "text", "string": "We'll show up and he'll be like" } ], "id": "p:1/D3DBDAD8-5EEE-4D72-ADB7-20A74501706D", "time": 1615577622383.0002, "text": "We'll show up and he'll be like", "acknowledgments": [ { "chatID": "chat526745548997352517", "sender": "*my friend's email*", "associatedID": "p:1/D3DBDAD8-5EEE-4D72-ADB7-20A74501706D", "id": "am:F0716C13-6871-4286-A4A6-3CF3FB0B25CD", "fromMe": false, "time": 1615577636093.2012, "acknowledgmentType": 2003 } ] } } ], "service": "iMessage", "timePlayed": 0, "sender": "e:*my email*", "isDelivered": false }