Chat Room and Messages - TapCore

If you are using core implementation method, you can use the methods from the TapCoreChatRoomManager and TapCoreMessageManager class to manage chat room and messages.

TapTalk Chat Method

Description

Returns the room model of the currently active chat room.

Create new personal chat room with recipient user, or obtain chat room data if it already exists

Create new personal chat room with recipient user ID, or obtain chat room data if it already exists.

Obtain locally saved chat room details with a roomID.

Create a new group chat room with selected group name.

Create a new group chat room with selected group name and group picture.

Get room details from selected room ID.

Update existing group chat room data.

Update group picture with current selected image.

Delete group chat room from the device's local storage.

Delete group chat room and clear all chat data and participants.

Leave from selected group chat.

Add selected member(s) to current group chat room.

Remove selected member(s) from current group chat room.

Promote selected member(s) as admin(s) to the current group chat room.

Demote selected admin(s) to member(s) to the current group chat room.

Obtain Saved Messages chat room data

Notify that the active user has started typing in the selected room.

Notify that the active user has stopped typing in the selected room.

Send a new text message to the selected chat room.

Send a new message with location to the selected chat room.

Send a new image message to the selected chat room.

Send a new video message to the selected chat room.

Send a new file message to the selected chat room.

Send a new voice message to the selected chat room.

Send a new link message to the selected chat room.

Forward existing messages to the selected chat room.

Construct a customized TapTalk.io message model.

Send a new custom message to the room defined in the message model.

Edit the contents of the selected message.

Delete the selected message from the server.

Delete the selected message from local storage.

Cancel image, video, or file upload on the selected pending message.

Start a file download from the selected file, image, or video message.

Cancel image, video, or file download on the selected message.

Upload an image file to TapTalk.io server without sending message.

Upload a video file to TapTalk.io server without sending message.

Upload a document to TapTalk.io server without sending message.

Mark message as delivered by the active user.

Mark message as read by the active user.

Mark all unread messages in a chat room as read.

Retrieve messages from chat room that are already stored in the device's local storage.

Retrieve messages that are older than the provided timestamp from the server to the selected chat room.

Retrieve newer messages from the server to the selected chat room

Retrieve all available messages from the selected chat room.

Retrieve unread messages from the device's local storage.

Retrieve media messages from the device's local storage.

Call this method to search messages from the device's local storage with a keyword.

Set message as starred or remove star from message for the active user.

Retrieve list of messages marked as starred in a chat room.

Set message as pinned or remove pin from message for all room participants.

Retrieve list of pinned messages in a chat room.

Retrieve image, video, file, and link messages from a chat room.

Clear all existing messages in a selected chat room for the active user.

Schedule a message to be delivered at a specified time.

Retrieve list of created scheduled messages in a chat room.

Send a previously created scheduled message immediately to the recipient.

Change the deliver time of a previously created scheduled message.

Update the contents of a scheduled message that has not been delivered.

Delete a scheduled message that has not been delivered.

Retrieve info about a message's recipients that has read or received the message.

Retrieve a message's total read count from a non-personal room.

Get Active Chat Room

Returns the room model (TAPRoomModel) of the currently active chat room.

TAPRoomModel activeRoom = TapCoreChatRoomManager.getInstance().getActiveChatRoom();

Get Personal Chat Room with Recipient User

Create new personal chat room with recipient user, or obtain chat room data if it already exists.

TapCoreChatRoomManager.getInstance().getPersonalChatRoom(RECIPIENT_USER, new TapCoreGetRoomListener() {
    @Override
    public void onSuccess(TAPRoomModel room) {
        // Open chat room here
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Get Personal Chat Room with Recipient User ID

Create new personal chat room with recipient user ID, or obtain chat room data if it already exists.

TapCoreChatRoomManager.getInstance().getPersonalChatRoom(RECIPIENT_ID, new TapCoreGetRoomListener() {
    @Override
    public void onSuccess(TAPRoomModel room) {
        // Open chat room here
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Get Local Chat Room Data

Obtain locally saved chat room details with a roomID. Returns the saved room model or null if it does not exist.

TAPRoomModel room = TapCoreChatRoomManager.getInstance().getLocalChatRoomData(ROOM_ID);

Create Group Chat Room

Create a new group chat room with selected group name.

TapCoreChatRoomManager.getInstance().createGroupChatRoom(GROUP_NAME, PARTICIPANT_LIST, new TapCoreGetRoomListener() {
    @Override
    public void onSuccess(TAPRoomModel room) {
        // Group chat room created successfully            
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Create Group Chat Room

Create a new group chat room with selected group name and group picture.

TapCoreChatRoomManager.getInstance().createGroupChatRoomWithPicture(GROUP_NAME, PARTICIPANT_LIST, IMAGE_URI, new TapCoreCreateGroupWithPictureListener() {
    @Override
    public void onSuccess(TAPRoomModel room, boolean isPictureUploadSuccess) {
        // Group chat room created successfully            
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Get Chat Room Data

Get room details from selected room ID.

TapCoreChatRoomManager.getInstance().getChatRoomData(ROOM_ID,  new TapCoreGetRoomListener() {
    @Override
    public void onSuccess(TAPRoomModel room) {
        // Open chat room here
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Update Group Chat Room Details

Create a new Update existing group chat room data.

TapCoreChatRoomManager.getInstance().updateGroupChatRoomDetails(GROUP_ID, GROUP_NAME, new TapCoreGetRoomListener() {
    @Override
    public void onSuccess(TAPRoomModel room) {
        // Updated group chat room successfully         
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Update Group Image

Update group picture with current selected image.

TapCoreChatRoomManager.getInstance().updateGroupPicture(GROUP_ID, IMAGE_URI, new TapCoreGetRoomListener() {
    @Override
    public void onSuccess(TAPRoomModel room) {
        // Updated group chat room successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Delete Local Group Chat Room

Delete group chat room from the device's local storage and clear all chat data and participants. Locally deleted room data will still be accessible from the server if the user remains a participant in the room.

TapCoreChatRoomManager.getInstance().deleteLocalGroupChatRoom(ROOM_ID, new TapCommonListener() {
    @Override
    public void onSuccess(String successMessage) {
        // Deleted group chat room successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Delete Group Chat Room

Delete group chat room and clear all chat data and participants.

TapCoreChatRoomManager.getInstance().deleteGroupChatRoom(GROUP_CHAT_MODEL, new TapCommonListener() {
    @Override
    public void onSuccess(String successMessage) {
        // Deleted group chat room successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Leave Group Chat

Leave from selected group chat.

TapCoreChatRoomManager.getInstance().leaveGroupChatRoom(GROUP_ID, new TapCommonListener() {
    @Override
    public void onSuccess(String successMessage) {
        // Left chat room successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Add Members to Group Chat

Add selected member(s) to current group chat room.

TapCoreChatRoomManager.getInstance().addGroupChatMembers(GROUP_ID, USER_IDs, new TapCoreGetRoomListener() {
    @Override
    public void onSuccess(TAPRoomModel room) {
        // Added group members successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Remove Members from Group Chat

Remove selected member(s) from current group chat room.

TapCoreChatRoomManager.getInstance().removeGroupChatMembers(GROUP_ID, USER_IDs, new TapCoreGetRoomListener() {
    @Override
    public void onSuccess(TAPRoomModel room) {
        // Removed members successfully    
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Promote Group Admin

Promote selected member(s) as admin(s) to the current group chat room.

TapCoreChatRoomManager.getInstance().promoteGroupAdmins(GROUP_ID, USER_IDs, new TapCoreGetRoomListener() {
    @Override
    public void onSuccess(TAPRoomModel room) {
        // Promoted admins successfully 
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Demote Group Admin

Demote selected admin(s) to member(s) to the current group chat room.

 TapCoreChatRoomManager.getInstance().demoteGroupAdmins(GROUP_ID, USER_IDs, new TapCoreGetRoomListener() {
    @Override
    public void onSuccess(TAPRoomModel room) {
        // Demoted admins successfully 
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Get Saved Messages Chat Room

Obtain Saved Messages chat room data.

TapCoreChatRoomManager.getInstance(instanceKey).getSavedMessagesChatRoom(new TapCoreGetRoomListener() {
    @Override
    public void onSuccess(TAPRoomModel room) {
        // Open chat room here
    }
    
    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Send Start Typing

Notify that the active user has started typing in the selected room.

TapCoreChatRoomManager.getInstance().sendStartTypingEmit(ROOM_ID);

Send Stop Typing

Notify that the active user has stopped typing in the selected room.

TapCoreChatRoomManager.getInstance().sendStopTypingEmit(ROOM_ID);

Send Text Message

To send a text message to a chat room, use the sendTextMessage() method from the TapCoreMessageManager class.

TapCoreMessageManager.getInstance().sendTextMessage(MESSAGE_BODY, ROOM, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

Use the sendTextMessage() method with extra parameter to send a text message with quote.

TapCoreMessageManager.getInstance().sendTextMessage(MESSAGE_BODY, ROOM, QUOTED_MESSAGE, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

Send Location Message

You can send a location embedded in a chat message using sendLocationMessage(). This method takes latitude, longitude, and address text as parameters.

TapCoreMessageManager.getInstance().sendLocationMessage(LATITUDE, LONGITUDE, ADDRESS, ROOM, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

Use the sendLocationMessage() method with extra parameter to send a location message with quote.

TapCoreMessageManager.getInstance().sendLocationMessage(LATITUDE, LONGITUDE, ADDRESS, ROOM, QUOTED_MESSAGE, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

Send Image Message

To send an image to a chat room, you can use sendImageMessage() method by providing either IMAGE_URI, BITMAP, or IMAGE_URL as parameter.

// Send image with file Uri
TapCoreMessageManager.getInstance().sendImageMessage(IMAGE_URI, CAPTION, ROOM, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    @Override
    public void onProgress(TAPMessageModel message, int percentage, long bytes) {
        // Image upload is in progress
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});
// Send image with Bitmap
TapCoreMessageManager.getInstance().sendImageMessage(BITMAP, CAPTION, ROOM, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    @Override
    public void onProgress(TAPMessageModel message, int percentage, long bytes) {
        // Image upload is in progress
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});
// Send image with remote image URL
TapCoreMessageManager.getInstance().sendImageMessage(IMAGE_URL, CAPTION, ROOM, FETCH_METADATA, new TapCoreSendMessageListener() {
    @Override
    public void onTemporaryMessageCreated(TAPMessageModel message) {
        // Temporary message was created while fetching metadata
        // This callback will be called when FETCH_METADATA is true
    }
    
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    // onProgress is not called when remote URL is provided

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

Use the sendImageMessage() method with extra parameter to send an image message with quote.

// Send image with file Uri
TapCoreMessageManager.getInstance().sendImageMessage(IMAGE_URI, CAPTION, ROOM, QUOTED_MESSAGE, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    @Override
    public void onProgress(TAPMessageModel message, int percentage, long bytes) {
        // Image upload is in progress
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});
// Send image with Bitmap
TapCoreMessageManager.getInstance().sendImageMessage(BITMAP, CAPTION, ROOM, QUOTED_MESSAGE, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    @Override
    public void onProgress(TAPMessageModel message, int percentage, long bytes) {
        // Image upload is in progress
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});
// Send image with remote image URL
TapCoreMessageManager.getInstance().sendImageMessage(IMAGE_URL, CAPTION, ROOM, QUOTED_MESSAGE, FETCH_METADATA, new TapCoreSendMessageListener() {
    @Override
    public void onTemporaryMessageCreated(TAPMessageModel message) {
        // Temporary message was created while fetching metadata
        // This callback will be called when FETCH_METADATA is true
    }
    
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    // onProgress is not called when remote URL is provided

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

Send Video Message

To send a video to a chat room, you can use sendVideoMessage() method by providing VIDEO_URI or VIDEO_URL.

// Send video with file Uri
TapCoreMessageManager.getInstance().sendVideoMessage(VIDEO_URI, CAPTION, ROOM, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    @Override
    public void onProgress(TAPMessageModel message, int percentage, long bytes) {
        // Video upload is in progress
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});
// Send video with remote video URL
TapCoreMessageManager.getInstance().sendVideoMessage(CONTEXT, VIDEO_URL, CAPTION, ROOM, FETCH_METADATA, new TapCoreSendMessageListener() {
    @Override
    public void onTemporaryMessageCreated(TAPMessageModel message) {
        // Temporary message was created while fetching metadata
        // This callback will be called when FETCH_METADATA is true
    }
    
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    // onProgress is not called when remote URL is provided

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

Use the sendVideoMessage() method with extra parameter to send a video message with quote.

// Send video with file Uri
TapCoreMessageManager.getInstance().sendVideoMessage(VIDEO_URI, CAPTION, ROOM, QUOTED_MESSAGE, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    @Override
    public void onProgress(TAPMessageModel message, int percentage, long bytes) {
        // Video upload is in progress
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});
// Send video with remote video URL
TapCoreMessageManager.getInstance().sendVideoMessage(CONTEXT, VIDEO_URL, CAPTION, ROOM, QUOTED_MESSAGE, FETCH_METADATA, new TapCoreSendMessageListener() {
    @Override
    public void onTemporaryMessageCreated(TAPMessageModel message) {
        // Temporary message was created while fetching metadata
        // This callback will be called when FETCH_METADATA is true
    }
    
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    // onProgress is not called when remote URL is provided

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

Send File Message

You can also send a file to a chat room using the sendFileMessage() method with a provided FILE, URI, or FILE_URL.

// Send file with File object
TapCoreMessageManager.getInstance().sendFileMessage(FILE, ROOM, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    @Override
    public void onProgress(TAPMessageModel message, int percentage, long bytes) {
        // File upload is in progress
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});
// Send file with file Uri
TapCoreMessageManager.getInstance().sendFileMessage(URI, ROOM, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    @Override
    public void onProgress(TAPMessageModel message, int percentage, long bytes) {
        // File upload is in progress
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});
// Send file with remote file URL
TapCoreMessageManager.getInstance().sendFileMessage(FILE_URL, CAPTION, ROOM, FETCH_METADATA, new TapCoreSendMessageListener() {
    @Override
    public void onTemporaryMessageCreated(TAPMessageModel message) {
        // Temporary message was created while fetching metadata
        // This callback will be called when FETCH_METADATA is true
    }
    
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    // onProgress is not called when remote URL is provided

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

Use the sendFileMessage() method with extra parameters to send a file message with quote and/or caption.

// Send file with File object
TapCoreMessageManager.getInstance().sendFileMessage(FILE, ROOM, QUOTED_MESSAGE, CAPTION, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    @Override
    public void onProgress(TAPMessageModel message, int percentage, long bytes) {
        // File upload is in progress
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});
// Send file with file Uri
TapCoreMessageManager.getInstance().sendFileMessage(URI, ROOM, QUOTED_MESSAGE, CAPTION, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    @Override
    public void onProgress(TAPMessageModel message, int percentage, long bytes) {
        // File upload is in progress
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});
// Send file with remote file URL
TapCoreMessageManager.getInstance().sendFileMessage(FILE_URL, CAPTION, ROOM, QUOTED_MESSAGE, FILE_NAME, MIME_TYPE, FETCH_METADATA, new TapCoreSendMessageListener() {
    @Override
    public void onTemporaryMessageCreated(TAPMessageModel message) {
        // Temporary message was created while fetching metadata
        // This callback will be called when FETCH_METADATA is true
    }
    
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    // onProgress is not called when remote URL is provided

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

Send Voice Message

You can also send a voice note to a chat room using the sendVoiceMessage() method with a provided FILE or URI.

TapCoreMessageManager.getInstance().sendVoiceMessage(FILE, ROOM, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    @Override
    public void onProgress(TAPMessageModel message, int percentage, long bytes) {
        // File upload is in progress
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

Use the sendVoiceMessage() method with extra parameter to send a file message with quote.

TapCoreMessageManager.getInstance().sendVoiceMessage(FILE, ROOM, QUOTED_MESSAGE, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }
  
    @Override
    public void onProgress(TAPMessageModel message, int percentage, long bytes) {
        // File upload is in progress
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

You can send a link message, which is usually composed of a text message with URL on the body, using the sendLinkMessage() method.

TapCoreMessageManager.getInstance().sendLinkMessage(MESSAGE_BODY, ROOM, URLS, TITLE, DESCRIPTION, IMAGE, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

// With additional metadata parameters
TapCoreMessageManager.getInstance().sendLinkMessage(MESSAGE_BODY, ROOM, URLS, TITLE, DESCRIPTION, IMAGE, SITE_NAME, TYPE, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

Use the sendLinkMessage() method with extra parameters to send a link message with quote.

TapCoreMessageManager.getInstance().sendLinkMessage(MESSAGE_BODY, ROOM, QUOTED_MESSAGE, URLS, TITLE, DESCRIPTION, IMAGE, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

// With additional metadata parameters
TapCoreMessageManager.getInstance().sendLinkMessage(MESSAGE_BODY, ROOM, QUOTED_MESSAGE, URLS, TITLE, DESCRIPTION, IMAGE, SITE_NAME, TYPE, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message was constructed
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

Forward Message

To forward existing messages to chat room, call the sendForwardedMessage() method. You may also use sendForwardedMessages() to forward multiple messages at once, or sendForwardedMessageToMultipleRooms() or sendForwardedMessagesToMultipleRooms() to forward messages to multiple rooms at once.

// Forward a message
TapCoreMessageManager.getInstance().sendForwardedMessage(MESSAGE_TO_FORWARD, ROOM, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // New message to be forwarded was constructed
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

// Forward multiple messages at once
TapCoreMessageManager.getInstance().sendForwardedMessageToMultipleRooms(MESSAGES_TO_FORWARD, ROOM, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // New message to be forwarded was constructed
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

// Forward a message to multiple chat rooms
TapCoreMessageManager.getInstance().sendForwardedMessage(MESSAGE_TO_FORWARD, ROOMS, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // New message to be forwarded was constructed
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

// Forward multiple messages to multiple chat rooms at once
TapCoreMessageManager.getInstance().sendForwardedMessagesToMultipleRooms(MESSAGES_TO_FORWARD, ROOMS, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // New message to be forwarded was constructed
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

Construct TapTalk.io Message Model

You can construct your own customized message model to be used in chat as shown below.

TAPMessageModel customMessage = TapCoreMessageManager.getInstance().constructTapTalkMessageModel(
    MESSAGE_BODY,
    ROOM,
    MESSAGE_TYPE,
    MESSAGE_DATA);

To construct a custom message with quote, use the constructTapTalkMessageModelWithQuote() method.

TAPMessageModel customMessageWithQuote = TapCoreMessageManager.getInstance().constructTapTalkMessageModelWithQuote(
    MESSAGE_BODY,
    ROOM,
    MESSAGE_TYPE,
    MESSAGE_DATA,
    QUOTED_MESSAGE);

Send a Custom Message

To send a custom message that you just created above, call the sendCustomMessage() method with the custom message as a parameter.

TapCoreMessageManager.getInstance().sendCustomMessage(CUSTOM_MESSAGE, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message is being processed
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was sent successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }
});

Edit Message

To update the contents of a message, you may use the editMessage() method from TapCoreMessageManager class. Editing is currently available for text message and image or video message caption.

TapCoreMessageManager.getInstance().editMessage(MESSAGE_MODEL, UPDATED_TEXT, new TapCoreSendMessageListener() {
    @Override
    public void onStart(TAPMessageModel message) {
        // Message is being processed
    }

    @Override
    public void onSuccess(TAPMessageModel message) {
        // Message was edited successfully
    }

    @Override
    public void onError(@Nullable TAPMessageModel message, String errorCode, String errorMessage) {
      
    }

Delete Message

To delete a message permanently from the server, call deleteMessage() from TapCoreMessageManager class. When the message is successfully deleted, TapCoreMessageListener will invoke onMessageDeleted() callback.

TapCoreMessageManager.getInstance().deleteMessage(MESSAGE_MODEL);

Delete Message from Local Cache

To delete a message from local cache, call deleteLocalMessage() from TapCoreMessageManager class.

TapCoreMessageManager.getInstance().deleteLocalMessage(MESSAGE_LOCAL_ID);

Cancel Message File Upload

Messages such as Image, Video, and File messages requires a file upload completion before the message is sent. To cancel an ongoing file upload of a message, call the cancelMessageFileUpload() method.

TapCoreMessageManager.getInstance().cancelMessageFileUpload(MESSAGE);

Download Message File

To start a file download from a File, Image, or Video message, you can use the downloadMessageFile() method.

TapCoreMessageManager.getInstance().downloadMessageFile(MESSAGE, new TapCoreFileDownloadListener() {
    @Override
    public void onSuccess(TAPMessageModel message, File file) {
        // File downloaded successfully
    }

    @Override
    public void onProgress(TAPMessageModel message, int percentage, long bytes) {
        // File download is in progress
    }

    @Override
    public void onError(TAPMessageModel message, String errorCode, String errorMessage) {

    }
});

Cancel Message File Download

You can cancel download message with type such as Image, Video, and File by calling the cancelMessageFileDownload() method.

TapCoreMessageManager.getInstance().cancelMessageFileDownload(MESSAGE);

Upload Image

You can upload an image file to TapTalk.io server without sending message. The response will return the uploaded file ID and URL.

TapCoreMessageManager.getInstance(instanceKey).uploadImage(CONTEXT, IMAGE_URI, new TapCoreFileUploadListener() {
    @Override
    public void onStart(File file, Uri uri) {
        // Returns the compressed image file and uri before upload is started
    }  
    
    @Override
    public void onProgress(int percentage, long bytes) {
        // File upload in in progress
    }
    @Override
    public void onSuccess(String fileID, String fileURL) {
        // Successfully uploaded file
    }
    @Override
    public void onError(String errorCode, String errorMessage) {
        
    }
});

Upload Video

You can upload a video file to TapTalk.io server without sending message. The response will return the uploaded file ID and URL.

TapCoreMessageManager.getInstance(instanceKey).uploadVideo(CONTEXT, VIDEO_URI, new TapCoreFileUploadListener() {
    @Override
    public void onStart(File file, Uri uri) {
        // Returns the file and uri before upload is started
    }
    
    @Override
    public void onProgress(int percentage, long bytes) {
        // File upload in in progress
    }
    @Override
    public void onSuccess(String fileID, String fileURL) {
        // Successfully uploaded file
    }
    @Override
    public void onError(String errorCode, String errorMessage) {
        
    }
});

Upload File

You can also upload other formats of file/document to TapTalk.io server without sending message. The response will return the uploaded file ID and URL.

TapCoreMessageManager.getInstance(instanceKey).uploadFile(CONTEXT, FILE_URI, new TapCoreFileUploadListener() {
    @Override
    public void onStart(File file, Uri uri) {
        // Returns the file and uri before upload is started
    }
    
    @Override
    public void onProgress(int percentage, long bytes) {
        // File upload in in progress
    }
    @Override
    public void onSuccess(String fileID, String fileURL) {
        // Successfully uploaded file
    }
    @Override
    public void onError(String errorCode, String errorMessage) {
        
    }
});

Mark Message as Delivered

To manually mark a message as delivered, call the markMessageAsDelivered() method.

TapCoreMessageManager.getInstance().markMessageAsDelivered(MESSAGE);

Mark Message as Read

To manually mark a message as read, call the markMessageAsRead() method. You can also mark multiple messages as read at once using markMessagesAsRead().

// Mark single message as read with message model
TapCoreMessageManager.getInstance().markMessageAsRead(MESSAGE);


// Mark single message as read with message ID
TapCoreMessageManager.getInstance().markMessageAsRead(MESSAGE_ID);


// Mark multiple messages as read with list of message IDs
TapCoreMessageManager.getInstance().markMessagesAsRead(MESSAGE_IDS);


// Mark multiple messages as read with list of message IDs and completion listener
TapCoreMessageManager.getInstance().markMessagesAsRead(MESSAGE_IDS, new TapCoreUpdateMessageStatusListener() {
    @Override
    public void onSuccess(List<String> updatedMessageIDs) {
        // updatedMessageIDs contains message IDs that were successfully marked as read
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Mark All Chat Room Messages as Read

To quickly mark all unread messages in a chat room as read, call markAllMessageInRoomAsRead() method.

// Mark all unread messages in specified chat room as read
TapCoreMessageManager.getInstance().markAllMessagesInRoomAsRead(ROOM_ID);


// Mark all unread messages in specified chat room as read with completion listener
TapCoreMessageManager.getInstance().markAllMessagesInRoomAsRead(ROOM_ID, new TapCoreUpdateMessageStatusListener() {
    @Override
    public void onSuccess(List<String> updatedMessageIDs) {
        // updatedMessageIDs contains message IDs that were successfully marked as read
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Get Local Messages from Chat Room

In a chat room, you can retrieve messages that are already stored in the device's local storage by calling getLocalMessages() method.

TapCoreMessageManager.getInstance().getLocalMessages(ROOM_ID, new TapCoreGetMessageListener() {
    @Override
    public void onSuccess(List<TAPMessageModel> messages) {
        // Retrieved messages successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Retrieving local messages is fast and reliable, but may not contain all messages available in the selected chat room. To obtain more messages that are available from the server, you may use getOlderMessagesBeforeTimestamp() and getNewerMessagesAfterTimestamp() methods.

Get Older Messages from Chat Room

To retrieve older messages in a chat room from the server, use the getOlderMessagesBeforeTimestamp() method.

TapCoreMessageManager.getInstance().getOlderMessagesBeforeTimestamp(ROOM_ID, MAX_CREATED_TIMESTAMP, NUMBER_OF_ITEMS, new TapCoreGetOlderMessageListener() {
    @Override
    public void onSuccess(List<TAPMessageModel> messages, Boolean hasMoreData) {
        // hasMoreData will return true if more messages that have not been retrieved remain in the chat room
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Get Newer Messages from Chat Room

To retrieve newer messages in a chat room from the server, use the getNewerMessagesAfterTimestamp() method.

TapCoreMessageManager.getInstance().getNewerMessagesAfterTimestamp(ROOM_ID, MIN_CREATED_TIMESTAMP, LAST_UPDATE_TIMESTAMP, new TapCoreGetMessageListener() {
    @Override
    public void onSuccess(List<TAPMessageModel> messages) {
        // Retrieved messages successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

You can also call getNewerMessages() without providing MIN_CREATED_TIMESTAMP and LAST_UPDATE_TIMESTAMP, only providing ROOM_ID as the parameter. With this method, MIN_CREATED_TIMESTAMP will automatically be set to the oldest existing message's created time in the room, and LAST_UPDATE_TIMESTAMP will be obtained from local cache.

TapCoreMessageManager.getInstance().getNewerMessages(ROOM_ID, new TapCoreGetMessageListener() {
    @Override
    public void onSuccess(List<TAPMessageModel> messages) {
        // Retrieved messages successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Get All Messages from Chat Room

You may also retrieve all available messages from a chat room using the getAllMessagesFromRoom() method.

TapCoreMessageManager.getInstance().getAllMessagesFromRoom(ROOM_ID, new TapCoreGetAllMessageListener() {
    @Override
    public void onGetLocalMessagesCompleted(List<TAPMessageModel> messages) {
        // Retrieved local messages from room
    }
    
    @Override
    public void onGetAllMessagesCompleted(List<TAPMessageModel> allMessages, List<TAPMessageModel> olderMessages, List<TAPMessageModel> newerMessages) {
        // Successfully retrieved all messages from room
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

getAllMessagesFromRoom() is convenient to obtain all existing chat room messages since the beginning of the room creation, but the process will take longer depending on the number of messages contained in the selected room. TapCoreGetAllMessageListener will trigger two callbacks sequentially during the process of retrieving messages: • onGetLocalMessagesCompleted() will be triggered first once local messages are retrieved, the process will then continue to retrieve more messages from the server. • onGetAllMessagesCompleted() will be triggered after all messages from the server are successfully retrieved, this callback contains three parameters containing all messages, older messages (that did not exist in local storage), and newer messages that have recently been updated), the latter two parameters might be empty depending on the situation.

Get Unread Messages from Chat Room

You can retrieve unread messages from the device's local storage by calling getUnreadMessagesFromRoom() method.

TapCoreMessageManager.getInstance().getUnreadMessagesFromRoom(ROOM_ID, new TapCoreGetMessageListener() {
    @Override
    public void onSuccess(List<TAPMessageModel> messages) {
        // Retrieved messages successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Get Media Messages from Chat Room

You can also retrieve media messages from the device's local storage, which consists of image, video, and documents, by calling getMediaMessagesFromRoom() method.

TapCoreMessageManager.getInstance().getUnreadMessagesFromRoom(ROOM_ID, LAST_TIMESTAMP, NUMBER_OF_ITEM, new TapCoreGetMessageListener() {
    @Override
    public void onSuccess(List<TAPMessageModel> messages) {
        // Retrieved messages successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Search Local Message

Call this method to search messages from the device's local storage with a keyword. Provided keyword will be used to filter message body in the search result.

TapCoreMessageManager.getInstance().searchLocalMessageWithKeyword(KEYWORD, new TapCoreGetMessageListener() {
    @Override
    public void onSuccess(List<TAPMessageModel> messages) {
        // Returns filtered messages obtained from local storage
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Star/Unstar Messages

You may use these methods to mark a message or multiple messages as starred, or remove messages from the starred list. Only the active user can retrieve his/her own starred messages.

// Star single message
TapCoreMessageManager.getInstance().starMessage(ROOM_ID, MESSAGE_ID, new TapCoreGetStringArrayListener() {
    @Override
    public void onSuccess(ArrayList<String> arrayList) {
        // Returns list of messageID of starred messages
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

// Star multiple messages
TapCoreMessageManager.getInstance().starMessages(ROOM_ID, MESSAGE_IDS, new TapCoreGetStringArrayListener() {
    @Override
    public void onSuccess(ArrayList<String> arrayList) {
        // Returns list of messageID of starred messages
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

// Unstar single message
TapCoreMessageManager.getInstance().unstarMessage(ROOM_ID, MESSAGE_ID, new TapCoreGetStringArrayListener() {
    @Override
    public void onSuccess(ArrayList<String> arrayList) {
        // Returns list of messageID of unstarred messages
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

// Unstar multiple messages
TapCoreMessageManager.getInstance().unstarMessages(ROOM_ID, MESSAGE_IDS, new TapCoreGetStringArrayListener() {
    @Override
    public void onSuccess(ArrayList<String> arrayList) {
        // Returns list of messageID of unstarred messages
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Get Starred Messages

You can use the method below get a list of message IDs marked as starred by the user.

TapCoreMessageManager.getInstance().getStarredMessageIds(ROOM_ID, new TapCoreGetStringArrayListener() {
    @Override
    public void onSuccess(ArrayList<String> arrayList) {
        // Returns list of messageID of starred messages
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

A method to obtain the full message model list of the starred messages with pagination is also provided.

TapCoreMessageManager.getInstance().getStarredMessages(ROOM_ID, PAGE_NUMBER, NUMBER_OF_ITEMS, new TapCoreGetOlderMessageListener() {
    @Override
    public void onSuccess(List<TAPMessageModel> messages, Boolean hasMoreData) {
        // hasMoreData will return true if the room has remaining starred messages that have not been retrieved
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Pin/Unpin Message

You may use these methods to pin or unpin a message or multiple messages in a chat room. Every participant in the room can retrieve the chat room's pinned messages.

// Pin single message
TapCoreMessageManager.getInstance().pinMessage(ROOM_ID, MESSAGE_ID, new TapCoreGetStringArrayListener() {
    @Override
    public void onSuccess(ArrayList<String> arrayList) {
        // Returns list of messageID of pinned messages
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

// Pin multiple messages
TapCoreMessageManager.getInstance().pinMessage(ROOM_ID, MESSAGE_IDS, new TapCoreGetStringArrayListener() {
    @Override
    public void onSuccess(ArrayList<String> arrayList) {
        // Returns list of messageID of pinned messages
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

// Unpin single message
TapCoreMessageManager.getInstance().unpinMessage(ROOM_ID, MESSAGE_ID, new TapCoreGetStringArrayListener() {
    @Override
    public void onSuccess(ArrayList<String> arrayList) {
        // Returns list of messageID of unpinned messages
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

// Unpin multiple messages
TapCoreMessageManager.getInstance().unpinMessage(ROOM_ID, MESSAGE_IDS, new TapCoreGetStringArrayListener() {
    @Override
    public void onSuccess(ArrayList<String> arrayList) {
        // Returns list of messageID of unpinned messages
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Get Pinned Messages

You can use the method below get a list of message IDs of pinned messages in a chat room.

TapCoreMessageManager.getInstance().getPinnedMessageIDs(ROOM_ID, new TapCoreGetStringArrayListener() {
    @Override
    public void onSuccess(ArrayList<String> arrayList) {
        // Returns list of messageID of pinned messages
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

A method to obtain the full message model list of the pinned messages with pagination is also provided.

TapCoreMessageManager.getInstance().getPinnedMessages(ROOM_ID, PAGE_NUMBER, NUMBER_OF_ITEMS, new TapCoreGetOlderMessageListener() {
    @Override
    public void onSuccess(List<TAPMessageModel> messages, Boolean hasMoreData) {
        // hasMoreData will return true if the room has remaining pinned messages that have not been retrieved
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Get Shared Content Messages

You can retrieve media-type messages, consisting of image, video, file, and link messages from a chat room by using getSharedContentMessages method.

TapCoreMessageManager.getInstance().getSharedContentMessages(ROOM, MIN_CREATED_TIMESTAMP, MAX_CREATED_TIMESTAMP, new TapCoreGetSharedContentMessageListener() {
    @Override
    public void onSuccess(List<TAPMessageModel> mediaMessages, List<TAPMessageModel> fileMessages, List<TAPMessageModel> linkMessages) {
        // mediaMessages contains image and video messages
        // fileMessages contains file/document messages
        // linkMessages contains link messages
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Delete All Chat Room Messages

Use the deleteAllChatRoomMessages() method from the TapCoreChatRoomManager class to clear all existing messages in a selected chat room for the active user. The selected messages will only be deleted for the active user, and will not affect the other participants in the selected room.

TapCoreChatRoomManager.getInstance().deleteAllChatRoomMessages(ROOM_ID, new TapCommonListener() {
    @Override
    public void onSuccess(String successMessage) {
        // Successfully deleted all messages in the chat room
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Create Scheduled Message

You can schedule a constructed message model to be delivered at a specified time to a chat room.

TAPMessageModel constructedMessage = TapCoreMessageManager.getInstance().constructTapTalkMessageModel(
    MESSAGE_BODY,
    ROOM,
    MESSAGE_TYPE,
    MESSAGE_DATA);
    
TapCoreChatRoomManager.getInstance().createScheduledMessage(constructedMessage, TIMESTAMP, new TapCoreCreateScheduledMessageListener() {
    @Override
    public void onSuccess(TapScheduledMessageModel scheduledMessage) {
        // Successfully created a scheduled message
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Get Scheduled Messages

You may then retrieve the list of created scheduled messages that have not yet been delivered in a chat room.

TapCoreChatRoomManager.getInstance().getScheduledMessages(ROOM_ID, new TapCoreGetScheduledMessagesListener() {
    @Override
    public void onSuccess(List<TapScheduledMessageModel> scheduledMessages) {
        // Successfully retrieved scheduled messages
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Send Scheduled Message Now

You may also send a previously created scheduled message immediately to the recipient.

// Send a scheduled message immediately
TapCoreChatRoomManager.getInstance().sendScheduledMessageNow(SCHEDULED_MESSAGE_ID, ROOM_ID, new TapCoreGetIntegerArrayListener() {
    @Override
    public void onSuccess(ArrayList<Integer> sentIDs) {
        // Successfully sent scheduled message
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

// Send multiple scheduled messages immediately
TapCoreChatRoomManager.getInstance().sendScheduledMessagesNow(SCHEDULED_MESSAGE_IDS, ROOM_ID, new TapCoreGetIntegerArrayListener() {
    @Override
    public void onSuccess(ArrayList<Integer> sentIDs) {
        // Successfully sent scheduled messages
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Edit Scheduled Message Time

To change the deliver time of a previously created scheduled message, use the editScheduledMessageTime method from TAPCoreMessageManager.

TapCoreChatRoomManager.getInstance().editScheduledMessageTime(SCHEDULED_MESSAGE_ID, TIMESTAMP, new TapCommonListener() {
    @Override
    public void onSuccess(String successMessage) {
        // Successfully edited scheduled message
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Edit Scheduled Message Content

You may also update the contents of a scheduled message that was previously created before it is delivered to the recipient.

// Edit message with updated message model
TapCoreChatRoomManager.getInstance().editScheduledMessageContent(SCHEDULED_MESSAGE_ID, UPDATED_MESSAGE, new TapCommonListener() {
    @Override
    public void onSuccess(String successMessage) {
        // Successfully edited scheduled message
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

// Edit text content of the existing message
TapCoreChatRoomManager.getInstance().editScheduledMessageContent(SCHEDULED_MESSAGE_ID, PREVIOUS_MESSAGE, UPDATED_TEXT, new TapCommonListener() {
    @Override
    public void onSuccess(String successMessage) {
        // Successfully edited scheduled message
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Delete Scheduled Message

To cancel sending a scheduled message that has not been delivered, you can delete it using deleteScheduledMessage method.

// Delete a scheduled message
TapCoreChatRoomManager.getInstance().deleteScheduledMessage(SCHEDULED_MESSAGE_ID, ROOM_ID, new TapCoreGetIntegerArrayListener() {
    @Override
    public void onSuccess(ArrayList<Integer> deletedIDs) {
        // Successfully deleted scheduled message
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

// Delete multiple scheduled messages
TapCoreChatRoomManager.getInstance().deleteScheduledMessages(SCHEDULED_MESSAGE_IDS, ROOM_ID, new TapCoreGetIntegerArrayListener() {
    @Override
    public void onSuccess(ArrayList<Integer> deletedIDs) {
        // Successfully deleted scheduled messages
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Get Message Details

You can retrieve info about a message's recipients that has read or received the message.

TapCoreChatRoomManager.getInstance().getMessageDetails(MESSAGE_ID, new TapCoreGetMessageDetailsListener() {
    @Override
    public void onSuccess(TAPMessageModel message, List<TapMessageRecipientModel> deliveredTo, List<TapMessageRecipientModel> readBy) {
        // Successfully retrieved message info
        // message: the message model
        // deliveredTo: list of recipients that has received the message
        // readBy: list of recipients that has read the message
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Get Message Total Read Count

You can also retrieve a message's total read count from a non-personal room.

TapCoreChatRoomManager.getInstance().getMessageTotalRead(MESSAGE_ID, new TapCoreGetIntegerListener() {
    @Override
    public void onSuccess(int readCount) {
        // Successfully retrieved message read count
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

Last updated

Was this helpful?