Update a message
The Chat SDK supports modifying the content of all storable message types, including text, image, GIF, voice, video, reference, file, and custom messages.
Modify a message
In Swift, call BaseChannel.modifyMessage(params:completion:) to update message content. The Objective-C selector is shown in the secondary tab.
- Swift
- Objective-C
swift
import NexconnChatSDK
guard let messageContent = message.content as? TextMessage else {
return
}
messageContent.text = "Updated text"
let params = ModifyMessageParams(
messageId: message.messageId,
content: messageContent
)
BaseChannel.modifyMessage(params: params) { updatedMessage, error in
guard let updatedMessage, error == nil else {
print("Failed to modify message: \(error?.localizedDescription ?? "unknown error")")
return
}
print("Modified message: \(updatedMessage.messageId)")
}
Objective C
NCTextMessage *messageContent = (NCTextMessage *)message.content;
messageContent.text = @"Updated text";
NCModifyMessageParams *params = [[NCModifyMessageParams alloc]
initWithMessageId:message.messageId
content:messageContent];
[NCBaseChannel modifyMessageWithParams:params completion:^(NCMessage * _Nullable updatedMessage, NCError * _Nullable error) {
if (error == nil) {
NSLog(@"Modified message: %@", updatedMessage.messageId);
}
}];
| Property | Type | Description |
|---|---|---|
messageId | NSString | Server message ID (message.messageId) |
content | NCMessageContent | Updated message content |
Listen for modifications
Other devices and users receive modification callbacks via MessageHandler:
- Swift
- Objective-C
swift
import NexconnChatSDK
final class MessageEditHandler: NSObject, MessageHandler {
func start() {
NCEngine.addMessageHandler(identifier: "MyHandler", handler: self)
}
func onMessagesModified(_ event: MessagesModifiedEvent) {
print("Modified messages: \(event.messages.count)")
}
func onModifiedMessageSyncCompleted(_ event: ModifiedMessageSyncCompletedEvent) {
print("Modified message sync completed.")
}
}
Objective C
[NCEngine addMessageHandlerWithIdentifier:@"MyHandler" handler:self];
- (void)onMessagesModified:(NCMessagesModifiedEvent *)event {
// event.messages: the modified messages
}
- (void)onModifiedMessageSyncCompleted:(NCModifiedMessageSyncCompletedEvent *)event {
// Sync of modified messages completed after reconnection
}