Use MessagesRequestBuilder with setParentMessageId() to fetch messages belonging to a specific thread. The fetchPrevious() method returns an array of BaseMessage objects representing thread replies.
let messagesRequest = MessagesRequest.MessageRequestBuilder() .setParentMessageId(parentMessageId: 38208) .set(limit: 50) .build()messagesRequest.fetchPrevious(onSuccess: { (messages) in for message in messages! { if let textMessage = message as? TextMessage { print("Text Message: " + textMessage.stringValue()) } else if let mediaMessage = message as? MediaMessage { print("Media Message: " + mediaMessage.stringValue()) } else if let customMessage = message as? CustomMessage { print("Custom Message: " + customMessage.stringValue()) } }}) { (error) in print("Messages fetching failed with error: " + error!.errorDescription)}
Avoid Threaded Messages in User/Group Conversations
Use hideReplies(hide: true) to exclude threaded messages when fetching messages for a conversation. The response is an array of BaseMessage objects, excluding any messages that are replies within a thread.
Swift (User)
Swift (Group)
let messagesRequest = MessagesRequest.MessageRequestBuilder() .set(uid: "cometchat-uid-2") .set(limit: 50) .hideReplies(hide: true) .build()messagesRequest.fetchPrevious(onSuccess: { (messages) in for message in messages! { print("Message ID: \(message.id), parentMessageId: \(message.parentMessageId)") }}) { (error) in print("Messages fetching failed with error: " + error!.errorDescription)}
let messagesRequest = MessagesRequest.MessageRequestBuilder() .set(guid: "cometchat-guid-1") .set(limit: 50) .hideReplies(hide: true) .build()messagesRequest.fetchPrevious(onSuccess: { (messages) in for message in messages! { print("Message ID: \(message.id), parentMessageId: \(message.parentMessageId)") }}) { (error) in print("Messages fetching failed with error: " + error!.errorDescription)}