Customize Chat Message Bubble

When TapTalk.io framework is integrated to your app with the UI implementation method, you can add customized chat message bubbles to be used in chat.

Adding a Custom Chat Bubble

You can check the following example to add a custom bubble to your chat.

1. Create your own table view cell

TapTalk.io custom chat bubble is created based on TAPBaseGeneralBubbleTableViewCell subclass of UITableViewCell class. To add custom chat bubble, you have to create your own table view cell class subclass of TAPBaseGeneralBubbleTableViewCell class and check also create XIB file.

You can download the sample xib file for right chat bubble cell (sender) and left chat bubble cell (recipient) by clicking the link.

2. Add your custom bubble class

To add your custom bubble to TapTalk.io, use the TapUI class and call the addCustomBubbleWithClassName method. This is typically done in your AppDelegate class in method application:didFinishLaunchingWithOptions:.

#import <TapTalk/TapUI.h>

[[TapUI sharedInstance] addCustomBubbleWithClassName:@"CustomTableViewCell" type:3001 delegate:self bundle:[NSBundle mainBundle]];

Showing Your Custom Bubble in Chat

You can use your customized chat bubble in a chat room by constructing a custom TAPMessageModel with constructTapTalkMessageModel: method, then sending the constructed message to the chat room with sendCustomMessage:. Both methods can be accessed from the TapCoreMessageManager class.

To construct a message, you are required to have a TAPRoomModel as a parameter. You can use getPersonalChatRoom: or getGroupChatRoom: method in TapCoreChatRoomManager class to obtain a chat room model.

Below is an example to send a custom message with the steps mentioned above.

#import <TapTalk/TapCoreChatRoomManager .h>

// Obtain TapTalk Room with Recipient User ID
// This Room model will be use to construct TapTalk Message Model
[TapCoreChatRoomManager sharedManager] getPersonalChatRoomWithRecipientUserID:RECIPIENT_USER_ID
success:^(TAPRoomModel *room) {
    //Construct TAPMessageModel
    TAPMessageModel *messageModel = [[TAPCoreMessageManager sharedManager] constructTapTalkMessageModelWithRoom:room
                                                                                                    messageBody:MESSAGE_BODY
                                                                                                    messageType:MESSAGE_TYPE
                                                                                                    messageData:MESSAGE_DATA];
   
    //Send Custom Message
    [[TAPCoreMessageManager sharedManager] sendCustomMessageWithMessageModel:messageModel
    start:^(TAPMessageModel * _Nonnull message) {
        
    }
    success:^(TAPMessageModel * _Nonnull message) {
       // Successfully sent custom message
    }
    failure:^(NSError * _Nonnull error) {
       // Failed to send custom message
    }];
}
failure:^(NSError * _Nonnull error) {
    // Failed to get room data
}];

Last updated

Was this helpful?