Update a message
The Chat SDK supports updating the content of all storable message types, including text, image, GIF, voice, video, reference, file, and custom messages.
Update a message
In Swift, call BaseChannel.updateMessage(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 = UpdateMessageParams(
messageId: message.messageId,
content: messageContent
)
BaseChannel.updateMessage(params: params) { updatedMessage, error in
guard let updatedMessage, error == nil else {
print("Failed to update message: \(error?.localizedDescription ?? "unknown error")")
return
}
print("Updated message: \(updatedMessage.messageId)")
}
Objective C
NCTextMessage *messageContent = (NCTextMessage *)message.content;
messageContent.text = @"Updated text";
NCUpdateMessageParams *params = [[NCUpdateMessageParams alloc]
initWithMessageId:message.messageId
content:messageContent];
[NCBaseChannel updateMessageWithParams:params completion:^(NCMessage * _Nullable updatedMessage, NCError * _Nullable error) {
if (error == nil) {
NSLog(@"Updated message: %@", updatedMessage.messageId);
}
}];
| Property | Type | Description |
|---|---|---|
messageId | NSString | Server message ID (message.messageId) |
content | NCMessageContent | Updated message content |
Listen for updates
Other devices and users receive update callbacks via MessageHandler:
- Swift
- Objective-C
swift
import NexconnChatSDK
final class MessageEditHandler: NSObject, MessageHandler {
func start() {
NCEngine.addMessageHandler(identifier: "MyHandler", handler: self)
}
func onMessagesUpdated(_ event: MessagesUpdatedEvent) {
print("Updated messages: \(event.messages.count)")
}
func onUpdatedMessageSyncCompleted(_ event: UpdatedMessageSyncCompletedEvent) {
print("Updated message sync completed.")
}
}
Objective C
[NCEngine addMessageHandlerWithIdentifier:@"MyHandler" handler:self];
- (void)onMessagesUpdated:(NCMessagesUpdatedEvent *)event {
// event.messages: the updated messages
}
- (void)onUpdatedMessageSyncCompleted:(NCUpdatedMessageSyncCompletedEvent *)event {
// Sync of updated messages completed after reconnection
}