One of the very basic and common interaction design patterns in messaging apps (e.g. WhatsApp, LINE, Facebook Messenger) is to provide micro-interactions associated with the message composition and messages themselves.
For example, users are given a display that indicates if the person is actively writing a text message or recording an audio message.
Another example is that users are shown status changes to the messages as they change from not received --> received/unread --> read. I believe that if you are currently on the chat thread while someone is sending a message it automatically becomes a read message, regardless of whether you have actually read the message or not (probably different with audio messages or voice notes since you have to at least play some portion of it).
However, I am curious as to how the software or app distinguishes between someone who happens to be on the same message screen but hasn't read the message with someone who has gone through the message and read it. On a desktop application where there are more things that can be monitored and tracked this might be an easier task. In mobile apps this might be a bit more tricky.
I have not seen any designs or configurations for messaging apps that allow a more fine tune determination of the status of messages or to modify them (at least I haven't used them before), and I think that it can sometimes cause confusion between users because of the assumption that there is a mix of synchronous and asynchronous communication that isn't always clear.
Is there a best practice or standard, or even just something that someone has seen that works well and is unambiguous in any of the major apps out there?