Delete messages
Delete messages from your own history. Deleting messages does not affect other users' records.
| Method | Scope | API |
|---|---|---|
| Delete by client ID | Local only | deleteLocalMessages:completion: on NCBaseChannel |
| Delete specific messages (for me) | Local + server | deleteMessagesForMe:completion: on channel instance |
| Delete for everyone | Local + server (all clients) | deleteMessageForAll:completion: on channel instance |
| Clear all messages by timestamp | Local only or local + server | clearMessagesWithParams: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
- Objective-C
swift
import NexconnChatSDK
BaseChannel.deleteLocalMessages(messageClientIds: [message.clientId]) { isDeleted, error in
if error == nil, isDeleted {
// Deleted locally
}
}
Objective C
[NCBaseChannel deleteLocalMessages:@[@(message.clientId)]
completion:^(BOOL isDeleted, NCError *error) {
// isDeleted == YES means deleted
}];
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
- Objective-C
swift
import NexconnChatSDK
guard let channel = DirectChannel(channelId: "targetUserId") else {
return
}
channel.deleteMessagesForMe([message1, message2]) { error in
if error == nil {
// Deleted for me
}
}
Objective C
NCDirectChannel *channel = [[NCDirectChannel alloc] initWithChannelId:@"targetUserId"];
[channel deleteMessagesForMe:@[message1, message2]
completion:^(NCError *error) {
if (!error) {
// 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
- Objective-C
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 ?? "")")
}
}
Objective C
NCDirectChannel *channel = [[NCDirectChannel alloc] initWithChannelId:@"targetUserId"];
[channel deleteMessageForAll:message completion:^(NCMessage *deletedMessage, NCError *error) {
if (error == nil) {
NSLog(@"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
- Objective-C
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
}
}
Objective C
NCDirectChannel *channel = [[NCDirectChannel alloc] initWithChannelId:@"targetUserId"];
// Clear local messages only
NCClearMessagesParams *params = [[NCClearMessagesParams alloc]
initWithTimestamp:0 // 0 = clear all messages
policy:NCMessageOperationPolicyLocal];
[channel clearMessagesWithParams:params completion:^(NCError *error) {
if (!error) {
// Cleared
}
}];
// Clear both local and remote (requires cloud message storage)
NCClearMessagesParams *paramsRemote = [[NCClearMessagesParams alloc]
initWithTimestamp:0
policy:NCMessageOperationPolicyLocalRemote];
[channel clearMessagesWithParams:paramsRemote completion:^(NCError *error) {}];
NCClearMessagesParams properties
| Property | Type | Description |
|---|---|---|
timestamp | int64_t | Clear cutoff timestamp in milliseconds. Pass 0 to clear all messages in the current channel. |
policy | NCMessageOperationPolicy | Whether to clear local messages only or both local and remote messages. |
NCMessageOperationPolicy values:
| Value | Description |
|---|---|
NCMessageOperationPolicyLocal | Clear local messages only |
NCMessageOperationPolicyLocalRemote | Clear both local and server messages |