Regarding #1, It looks like this can be implemented within the current functionality as follows:
When the client is viewing the chat channel, have the client write a user entity saying, in this channel I have read messages up to (the date of the most recent message they have seen). Next, when the app loads the next time, call “getRecentChatMessages” and count up the messages since (the date of the most recent message they have seen). This will give you your count to show for that channel.
Limitations:
The chat queue for a channel has a limit of 250.
Messages have max days and max history (settable by the developer) so if the players been away a long time, some of those messages wont be around to be counted up.
Go to Messaging Chat to view the settings for these.