ReagentX / imessage-exporter

Export iMessage data + run iMessage Diagnostics
GNU General Public License v3.0
2.96k stars 119 forks source link

Digital Touch support #344

Open trymoose opened 3 weeks ago

trymoose commented 3 weeks ago

When researching handwritten messages I found digital touch messages were handled in bluebubbles the same way here and here. Piping them through protoscope gives a valid message but it is different and more complex than the handwritten ones.

ReagentX commented 3 weeks ago

Digital Touch is already supported—they are sent as gifs.

ReagentX commented 3 weeks ago

Actually this appears to have changed–they no longer get converted by the system. For what it's worth, they aren't supported by macOS either:

image

ReagentX commented 3 weeks ago

They also sometimes seem to not even have the requisite payload:

image

trymoose commented 3 weeks ago

I've been generating and viewing them on iOS. I don't think I've seen one with a NULL payload before.

ReagentX commented 3 weeks ago

Ok, so the one that had a NULL payload used the subject column (the one used for message subject lines) contained a GUID that mapped to an existing Digital Touch message in the conversation:

image

trymoose commented 3 weeks ago

I've made some progress implementing support for these messages.

trymoose commented 3 weeks ago

Ok, so the one that had a NULL payload used the subject column (the one used for message subject lines) contained a GUID that mapped to an existing Digital Touch message in the conversation:

image

Was the NULL message copy and pasted in iMessage?

ReagentX commented 3 weeks ago

It was not pasted and also does not show up in the thread.

trymoose commented 3 weeks ago

The only other thought I have right now is that it might be related to the announcements that show up saying "person kept a Digital Touch Message from you."

ReagentX commented 3 weeks ago

Those seem to come from one of the date columns.

ReagentX commented 3 weeks ago

The NULL Digital Touch messages do not have date_played and also have a custom type of 5, which may indicate the "Kept" status as you mentioned:

image

Also, they do not always have the subject field populated and contain no typedstream-encoded body data:

image

They also set this message_action_type field and do not have expiry data:

image

In my database, an item_type of 5 always correlates with a message_action_type of 2.

trymoose commented 3 weeks ago

I found some of the NULL payloads in my databases. I saw the database shows they are not delivered but finished:

Screenshot from 2024-09-19 20-23-50

I had the same item_type of 5 and message_action_type of 2.

ReagentX commented 3 weeks ago

Yes, I see the finished status too—it also appears for messages sent with full-screen expressives.