logo
On this page

Get the conversation list


Overview

Conversation, typically is the logical relationship automatically established by the ZIM SDK when a user sends a "single chat/group" message. Only the following message types can be used to establish a conversation:

ZIM supports users to listen for conversation changes and get a conversation list from the local database. It also supports developers to retrieve the complete conversation list of a specific user from the ZIM server.

You can obtain and display the one-on-one and group chat conversation lists in scenarios such as chats, gaming communities, and online consulting.

Listen for conversation changes

CategoryEventEvent ValueZIMConversation Property
Basic Conversation PropertiesChange conversation name.Updated
Change conversation avatar URL.conversationAvatarUrl
  • When a user sets a remark (friendAlias) for a friend, the ZIM SDK synchronously modifies the corresponding alias of the one-on-one conversation.
  • When a user sets a remark (groupAlias) for a group, the ZIM SDK will synchronize and modify the corresponding conversation alias for the group chat.
conversationAlias
Change unread message count.unreadMessageCount
Additional Conversation PropertiesUser sets/cancels a conversation as pinned.isPinned
User sets notification status for a conversation.notificationStatus
User saves a conversation draft.draft
User is mentioned in a conversation.mentionedInfoList
Last Message in Conversation ChangesUser receives a new message.lastMessage
User sends a new message.
Last message status or content changes.
Conversation Status ChangesUser has a new conversation.Added-

User voluntarily leaves/is kicked out of a group conversation.

Note

This assumes that the group conversation already exists (i.e., there are messages in the conversation).

Disabled-

Group conversation is dissolved.

Note

This assumes that the group conversation already exists (i.e., there are messages in the conversation).

Recipient user does not exist when sending a one-on-one message.
User sends a message to a group they have not joined.
User deletes a conversation.Deleted-

At this time, you can get the conversation list based on your demands.

Note

Currently, the callback conversationChanged only supports notification of incremental changes of the conversation list in the local database and the conversation list on the ZIM server.

You need to maintain the array of conversation lists retrieved from the queryConversationListWithConfig method, and based on current conversation updates, perform property changes, inserts, and sorted displays .

Untitled
// Set up the event handler
[self.zim setEventHandler:self];

...

- (void)zim:(ZIM *)zim conversationChanged:(NSArray<ZIMConversationChangeInfo *> *)conversationChangeInfoList {
    // Get the conversation change list.
    for (ZIMConversationChangeInfo *info in conversationChangeInfoList) {
        if (info.event == ZIMConversationEventAdded) {
            // Add to your self-maintained list and set up a UI fresh here.
        } else if (info.event == ZIMConversationEventUpdated) {
           // Edit the conversation properties, and set up a UI fresh here.
        }
    }
}
1
Copied!

Get the conversation list

ZIM supports developers to call SDK interfaces to retrieve the current user's conversation list from the local database. It also supports making requests to the ZIM server to retrieve the complete conversation list of a specific user.

After fetching the conversation list, developers can use it to customize the UI display of the conversation list.

From the local database

Note
  • The ZIM SDK currently only supports fetching one-to-one and group conversation lists, and does not support fetching the room conversation list.
  • The conversation list is stored in the local database, and when getting the conversation list, relevant data will be retrieved from the local database.
  • It is recommended for you to use this feature on the first screen of the conversation page.

After login, if users want to know what conversations they have joined, they can call the queryConversationListWithConfig method to query the conversation list.

To avoid the problem of pulling too many conversations at the same time, which takes a long time and causes slow loading of the conversation interface, you can customize the number of conversations by setting the ZIMConversationQueryConfig object for paging query when pulling conversations.

Untitled
ZIMConversationQueryConfig *config = [[ZIMConversationQueryConfig alloc] init];
// conversation query anchor. Empty indicates that the query starts from the latest.
config.nextConversation = nil;
// The number of queries per page.
config.count = 20;

// Get the conversation list.
[self.zim queryConversationListWithConfig:config callback:^(NSArray<ZIMConversation *> * _Nonnull conversationList, ZIMError * _Nonnull errorInfo) {
    // Get the results of query the conversation list.
    if(errorInfo.code == ZIMErrorCodeSuccess) {
        // You will need to save and maintain the conversation objects in the array.
    } else {
        // ......
    }
}];
1
Copied!

From the ZIM server

You can get a user's conversation list by calling the server API. For more details, please refer to the server API documentation Query conversation list

Previous

Call invitation (signaling)

Next

Manage unread message counts