Skip to main content

Message metadata

Message metadata adds key-value status data to messages. Use it for features like order status tracking, gift claiming, or message reactions.

tip
  • Supported in direct, group, and community channels only.
  • Max 20 key-value pairs per update, 300 total per message.
  • Each update generates an internal notification message.

Listen for metadata changes

Register an NCMessageHandler and implement the optional metadata callbacks:

swift
import NexconnChatSDK
final class MyMessageHandler: NSObject, MessageHandler {
func onMessageMetadataUpdated(_ event: MessageMetadataUpdatedEvent) {
// event.metadata: the updated key-value pairs
// event.message: the related message object
}

func onMessageMetadataDeleted(_ event: MessageMetadataDeletedEvent) {
// event.keys: the removed keys
// event.message: the related message object
}
}

let handler = MyMessageHandler()
NCEngine.addMessageHandler(identifier: "YourKey", handler: handler)

Set metadata (at send time)

Pass the initial metadata via NCSendMessageParams.metadata before sending:

swift
import NexconnChatSDK
let txt = TextMessage(text: "Order #12345")
let params = SendMessageParams(content: txt)
params.metadata = ["orderStatus": "pending"]
guard let channel = DirectChannel(channelId: "targetUserId") else { return }
channel.sendMessage(params: params, attachedHandler: nil, completionHandler: nil)

Update metadata (after sending)

Call setMetadata:completion: on the sent NCMessage instance:

swift
import NexconnChatSDK
message.setMetadata(["orderStatus": "confirmed"]) { error in
if error == nil {
// Updated — refresh UI
}
}

Delete metadata

Call deleteMetadataWithKeys:completion: on the message instance to remove specific keys:

swift
import NexconnChatSDK
message.deleteMetadata(keys: ["orderStatus"]) { error in
if error == nil {
// Deleted
}
}