- Adding a listener to receive Real-time Messages when your app is running
- Calling a method to retrieve Missed Messages when your app was not running
Real-time Messages
In other words, as a recipient, how do I receive messages when my app is running? For every activity or fragment you wish to receive messages in, you need to register theMessageListener using the addMessageListener() method.
We suggest adding the listener in the onResume() method of the activity or the fragment where you wish to receive these events in.
- Java
- Kotlin
We recommend you remove the listener once the activity or fragment is not in use. Typically, this can be added in the
onPause() method.
- Java
- Kotlin
Missed Messages
In other words, as a recipient, how do I receive messages that I missed when my app was not running? For most use cases, you will need to add functionality to load missed messages. If you’re building an on-demand or live streaming app, you may choose to skip this and fetch the message history (say, last 100 messages) instead. Using the sameMessagesRequest class and the filters provided by the MessagesRequestBuilder class, you can fetch the message that we sent to the logged-in user but were not delivered to them as they were offline. For this, you will require the ID of the last message received. You can either maintain it at your end or use the getLastDeliveredMessageId() method provided by the CometChat class. This ID needs to be passed to the setMessageId() method of the builder class.
Now using the fetchNext() method, you can fetch all the messages that were sent to the user when they were offline.
Calling the fetchNext() method on the same object repeatedly allows you to fetch all the offline messages for the logged in user in a paginated manner
Fetch Missed Messages of a particular one-on-one conversation
- Java
- Kotlin
Fetch Missed Messages of a particular group conversation
- Java
- Kotlin
Unread Messages
In other words, as a logged-in user, how do I fetch the messages I’ve not read? Using theMessagesRequest class described above, you can fetch the unread messages for the logged-in user. In order to achieve this, you need to set the unread variable in the builder to true using the setUnread() method so that only the unread messages are fetched.
Fetch Unread Messages of a particular one-on-one conversation
- Java
- Kotlin
Fetch Unread Messages of a particular group conversation
- Java
- Kotlin
Base MessageThe list of messages received is in the form of objects of
BaseMessage class. A BaseMessage can either be an object of the TextMessage, MediaMessage, CustomMessage, Action or Call class. You can use the instanceOf operator to check the type of object.Message History
In other words, as a logged-in user, how do I fetch the message history for a user or a group conversation?Fetch Message History of a particular one-on-one conversation
Using theMessagesRequest class and the filters for the MessagesRequestBuilder class as shown in the below code snippet, you can fetch the entire conversation between the logged in user and any particular user. For this use case, it is mandatory to set the UID parameter using the setUID() method of the builder. This UID is the unique id of the user for which the conversation needs to be fetched.
- Java
- Kotlin
fetchPrevious() method on the same object repeatedly allows you to fetch all the previous messages in a paginated way.
Fetch Message History of a particular group conversation
Using theMessagesRequest class and the filters for the MessagesRequestBuilder class as shown in the below code snippet, you can fetch the entire conversation for any group provided you have joined the group. For this use case, it is mandatory to set the GUID parameter using the setGUID() method of the builder. This GUID is the unique identifier of the Group for which the messages are to be fetched.
- Java
- Kotlin
fetchPrevious() method on the same object repeatedly allows you to fetch the entire conversation between the logged in user and the specified user. This can be implemented with upward scrolling to display the entire conversation.
Search Messages
Along with the other parameters mentioned above, you can use thesetSearchKeyword() method provided by the MessagesRequestBuilder class. This method takes a string as input. This is the string that is to be searched amongst the messages. This can be used to fetch all the messages that contain the string in a paginated way. Calling the fetchPrevious() method on the same object repeatedly allows you to fetch all the messages with the keyword specified in all your conversations.
Search Messages in a particular one-on-one conversation
- Java
- Kotlin
Search Messages in a particular group conversation
- Java
- Kotlin
Unread Messages Count
In other words, as a logged-in user, how do I find out the number of unread messages that I have?Fetch Unread Message Count of a particular one-on-one conversation
In other words, how do I find out the number of unread messages I have from a particular user? In order to get the unread message count for a particular user (with respect to the logged-in user), you can use thegetUnreadMessageCountForUser().
This method has the two variants:
- Java
- Kotlin
true:
- Java
- Kotlin
- Java
- Kotlin
onSuccess() callback, you will receive a Hashmap which will contain the UID of the user as the key and the unread message count as the value.
Fetch Unread Message Count of a particular group conversation
In other words, how do I find out the number of unread messages I have in a single group? In order to get the unread message count for a particular group, you can use thegetUnreadMessageCountForGroup().
This method has two variants:
- Java
- Kotlin
true:
- Java
- Kotlin
- Java
- Kotlin
onSuccess() callback, you will receive a Hashmap which will contain the GUID of the group as the key and the unread message count as the value.
Fetch Unread Message Count of all one-on-one & group conversations
In other words, how do I find out the number of unread messages for every one-on-one and group conversation? In order to get all the unread message counts, you can use thegetUnreadMessageCount() method. This method has two variants:
- Java
- Kotlin
true:
- Java
- Kotlin
- Java
- Kotlin
onSuccess() callback, you will receive a hashmap having two keys:
user- The value for this key holds another hashmap that holds theUIDsof users and their corresponding unread message counts.group- The value for this key holds another hashmap that holds theGUIDsof groups and their corresponding unread message counts.
Fetch Unread Message Count of all one-on-one conversations
In other words, how do I find out the number of unread messages I have for every user? In order to fetch the unread message counts for just the users, you can use thegetUnreadMessageCountForAllUsers() method.
This method, just like others, has two variants:
- Java
- Kotlin
true:
- Java
- Kotlin
- Java
- Kotlin
onSuccess() callback, you will receive a Hashmap that will contain the UIDs of users as the key and the unread message counts as the values.
Fetch Unread Message Count of all group conversations
In other words, how do I find out the number of unread messages for every group? In order to fetch the unread message counts for all groups, you can use thegetUnreadMessageCountForAllGroups() method.
This method has two variants:
- Java
- Kotlin
true:
- Java
- Kotlin
- Java
- Kotlin
onSuccess() callback, you will receive a hashmap which will contain the GUIDs of the groups as the key and the unread message counts as the values.