- 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? To receive real-time incoming messages, you need to register theMessageListener
wherever you wish to receive the incoming messages. You can use the addMessageListener()
method to do so.
Parameter | Description |
---|---|
listenerId | An ID that uniquely identifies that listener. |
As a sender, you will not receive your own message in a real-time message event. However, if a user is logged-in using multiple devices, they will receive an event for their own message in other devices.
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 message history 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 him as he was 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 he/she was offline.
Calling the fetchNext()
method on the same object repeatedly allows you to fetch all the offline messages for the logged in user.
Fetch Missed Messages of a particular one-on-one conversation
Fetch Missed Messages of a particular group conversation
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
Fetch Unread Messages of a particular group conversation
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 complete message history?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.
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.
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.
fetchPrevious()
method on the same object repeatedly allows you to fetch the entire conversation for the group. This can be implemented with upward scrolling to display the entire conversation.
Search Messages
In other words, as a logged-in user, how do I search a message? In order to do this, you can use thesetSearchKeyword()
method. This method accepts string as input. When set, the SDK will fetch messages which match the searchKeyword
.
By default, the searchKey is searched only in message text. However, if you enable
Conversation & Advanced Search
, the searchKey will be searched in message text, file name, mentions & mime type of the file.The Conversation & Advanced Search
is only available in Advanced
& Custom
plans. If you’re already on one of these plans, please enable the Conversation & Advanced Search
from CometChat Dashboard (Open your app, navigate to Chats -> Settings -> General Configuration)Feature | Basic Search | Advance Search |
---|---|---|
Text search | ✅ | ✅ |
File name search | ❌ | ✅ |
Mentions search | ❌ | ✅ |
Mime type search | ❌ | ✅ |
Search Messages in a particular one-on-one conversation
Search Messages in a particular group conversation
Unread Message 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, you can use thegetUnreadMessageCountForUser()
.
This method has the below two variants:
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 the below two variants:
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 count combined i.e unread message counts for all the users and groups, you can use thegetUnreadMessageCount()
method.
This method has two variants:
- users - The value for this key holds another object that holds the UID as key and their corresponding unread message count as value.
- groups - The value for this key holds another object that holds the GUID as key and their corresponding unread message count as value.
Fetch Unread Message Count of all one-on-one conversations
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:
Fetch Unread Message Count of all group conversations
In order to fetch the unread message counts for just the groups, you can use thegetUnreadMessageCountForAllGroups()
method. This method just like others has two variants: