Skip to main content

Receive messages

To monitor message reception, offline message synchronization, and related events in custom pages, use NCEngine.addMessageHandler(...).

Message handler overview

The SDK receives messages through the MessageHandler interface:

  • onMessageReceived(MessageReceivedEvent event): Called when real-time or offline messages arrive.
  • onOfflineMessageSyncCompleted(OfflineMessageSyncCompletedEvent event): Called when offline message synchronization completes.

The event object provides:

  • event.getLeft(): Number of remaining messages in the current package.
  • event.getHasPackage(): Whether the server has additional message packages to deliver.
  • event.getOffline(): Whether the current message is an offline message.

Add a message handler

Java
private static final String MSG_HANDLER_ID = "app_message_handler";

NCEngine.addMessageHandler(MSG_HANDLER_ID, new MessageHandler() {
@Override
public void onMessageReceived(MessageReceivedEvent event) {
Message message = event.getMessage();
Integer left = event.getLeft();
Boolean hasPackage = event.getHasPackage();
Boolean offline = event.getOffline();
// Handle the message
}

@Override
public void onOfflineMessageSyncCompleted(OfflineMessageSyncCompletedEvent event) {
// Offline message synchronization completed
}
});

Remove a message handler

Java
NCEngine.removeMessageHandler(MSG_HANDLER_ID);

Difference from NCChatUI event listeners

NCChatUI.addMessageEventListener(...) monitors UI-level events within Chat UI pages, such as UI refresh events triggered by sending, deleting, or inserting messages. It does not receive messages from the underlying SDK.

Configure automatic retry on failure

Chat UI enables automatic retry on send failure by default. You can disable this feature if needed. Set this configuration after initialization and before connecting:

Java
NCChatUIConfig.channelConfig().NC_enable_resend_message = false;