Skip to main content

Delete messages

Delete messages from your own history. Deleting messages does not affect other users' records.

MethodScopeAPI
Delete by client IDLocal onlydeleteLocalMessages:completion: on NCBaseChannel
Delete specific messages (for me)Local + serverdeleteMessagesForMe:completion: on channel instance
Delete for everyoneLocal + server (all clients)deleteMessageForAll:completion: on channel instance
Clear all messages by timestampLocal only or local + serverclearMessagesWithParams:completion: on channel instance
tip
  • Cloud message storage must be enabled to delete server-side messages.
  • To remove messages from all users' history, use deleteMessageForAll.
  • Open channel messages are automatically deleted when a participant leaves.

Delete by client ID (local only)

Use deleteLocalMessages:completion: on NCBaseChannel to delete messages by their local client IDs:

swift
import NexconnChatSDK

BaseChannel.deleteLocalMessages(messageClientIds: [message.clientId]) { isDeleted, error in
if error == nil, isDeleted {
// Deleted locally
}
}

Delete specific messages (for me only)

Use deleteMessagesForMe:completion: on a channel instance to delete messages from your local database and server record (max 100 per call):

swift
import NexconnChatSDK

guard let channel = DirectChannel(channelId: "targetUserId") else {
return
}

channel.deleteMessagesForMe([message1, message2]) { error in
if error == nil {
// Deleted for me
}
}

Delete for everyone

Use deleteMessageForAll:completion: on the channel instance to remove a message from all clients. The completion callback returns the deleted message entity on success.

swift
import NexconnChatSDK

guard let channel = DirectChannel(channelId: "targetUserId") else {
return
}

channel.deleteMessageForAll(message) { deletedMessage, error in
if error == nil {
print("Deleted for everyone: \(deletedMessage?.messageId ?? "")")
}
}

Clear all messages in a channel by timestamp

Use clearMessagesWithParams:completion: on a channel instance to clear messages up to a given timestamp:

swift
import NexconnChatSDK

guard let channel = DirectChannel(channelId: "targetUserId") else {
return
}

let localParams = ClearMessagesParams(timestamp: 0, policy: .local)
channel.clearMessages(params: localParams) { error in
if error == nil {
// Cleared locally
}
}

let remoteParams = ClearMessagesParams(timestamp: 0, policy: .localRemote)
channel.clearMessages(params: remoteParams) { error in
if error == nil {
// Cleared locally and remotely
}
}

NCClearMessagesParams properties

PropertyTypeDescription
timestampint64_tClear cutoff timestamp in milliseconds. Pass 0 to clear all messages in the current channel.
policyNCMessageOperationPolicyWhether to clear local messages only or both local and remote messages.

NCMessageOperationPolicy values:

ValueDescription
NCMessageOperationPolicyLocalClear local messages only
NCMessageOperationPolicyLocalRemoteClear both local and server messages