registerCustomMessages

public final Unit registerCustomMessages(List<Class<? extends MessageContent>> messageClasses)

Registers custom message types.

Define custom messages by extending CustomMessageContent or CustomMediaMessageContent, then call this method after initialize and before connect to register them.

The SDK will automatically:

  • Read metadata such as message type identifier and storage policy

  • Register the message class type internally

  • Handle encoding and decoding during send/receive

// 1. Define a custom message (extends CustomMessageContent)
class CardMessage : CustomMessageContent() {
var title: String = ""
var imageUrl: String = ""
var linkUrl: String = ""

override fun messageType(): String = "app:card"
override fun persistentFlag(): Int = MessagePersistent.COUNT

override fun encodeFields(): Map<String, Any?> = mapOf(
"title" to title,
"imageUrl" to imageUrl,
"linkUrl" to linkUrl
)

override fun decodeFields(fields: Map<String, Any?>) {
title = fields["title"] as? String ?: ""
imageUrl = fields["imageUrl"] as? String ?: ""
linkUrl = fields["linkUrl"] as? String ?: ""
}
}

// 2. Register the custom message
NCEngine.registerCustomMessages(listOf(CardMessage::class.java))

Parameters

messageClasses

List of custom message classes extending CustomMessageContent or CustomMediaMessageContent