Regarding #1 , Programming Your App to Make Decisions might help. This ability depends on how you display your Chat (in a Label or using a ListView) . If you use a ListView use the AfterPicking event but it won't be a long tap. If you put your chat in Buttons, then you can use a long tap because they have that capability.
Regarding #2 (How do you create separate chat rooms? - #2 by SteveJG)
Regarding #3 you can use the Get Block to fill in a Label or to use a sound (use a Sound component) whenever the DataEvent changes.
Regarding #4 You can share images and text
Regarding all your concerns, you could search the community for 'chat cloudDB' and discover many discussions that have addressed similar issues. Also review CloudDB.
None of these issues are difficult if you learn to code rather than copy code.
What have you tried?