Chat Room and Messages - TapCore

If you are using core implementation method, you can use the methods below to manage chat room and messages.

Note: Please add #import <TapTalk/TAPCoreChatRoomManager.h> or #import <TapTalk/TAPCoreMessageManager.h> before using these methods.

TapTalk Group 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 group room data from selected group 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.

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.

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>

TAPRoomModel *activeRoom = [[TAPCoreChatRoomManager sharedManager] getActiveChatRoom];

Get Local Chat Room Data

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

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>

TAPRoomModel *room = [[TAPCoreChatRoomManager sharedManager] getLocalChatRoomData:roomID];

Create Group Chat Room

Create a new group chat room with selected group name.

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>

[[TAPCoreChatRoomManager sharedManager] createGroupChatRoomWithGroupName:GROUP_NAME listOfParticipantUserIDs:PARTICIPANTS_USERID_ARRAY success:^(TAPRoomModel * _Nonnull room) {
    //Success create group chat
} failure:^(NSError * _Nonnull error) {
    //Failed create group chat
}];

Parameters GROUP_NAME: (String) your group name PARTICIPANTS_USERID_ARRAY: (Array) list of participant userIDs

Get Personal Chat Room with Recipient User

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

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>

[[TAPCoreChatRoomManager sharedManager] getPersonalChatRoomWithRecipientUser:RECIPIENT_USER success:^(TAPRoomModel * _Nonnull room) {
   //Success get chat room data
}];

Parameters RECIPIENT_USER: (TAPUserModel) recipient user data

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.

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>

[[TAPCoreChatRoomManager sharedManager] getPersonalChatRoomWithRecipientUserID:RECIPIENT_USER_ID success:^(TAPRoomModel * _Nonnull room) {
   //Success get chat room data
} failure:^(NSError * _Nonnull error) {
   //Failed get chat room data
}];

Parameters RECIPIENT_USER_ID: (String) user ID of recipient

Create Group Chat Room

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

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>

[[TAPCoreChatRoomManager sharedManager] createGroupChatRoomWithGroupName:GROUP_NAME profilePicture:PROFILE_PICTURE listOfParticipantUserIDs:PARTICIPANTS_USER_ID_ARRAY success:^(TAPRoomModel * _Nonnull room, BOOL isSuccessUploadGroupPicture) {
  //Success create group chat  
} failure:^(NSError * _Nonnull error) {
    //Failed create group chat
}];

Parameters GROUP_NAME: (String) your group name PARTICIPANTS_USERID_ARRAY: (Array) list of participant userIDs PROFILE_PICTURE: (UIImage) group picture image

Get Group Chat Room

Get group room data from selected group room ID.

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>

[[TAPCoreChatRoomManager sharedManager] getGroupChatRoomWithGroupRoomID:GROUP_ROOM_ID success:^(TAPRoomModel * _Nonnull room) {
  //Success get group chat room
} failure:^(NSError * _Nonnull error) {
  //Failed create group chat room
}];

Parameters GROUP_ROOM_ID: (String) room ID of group

Update Group Chat Room Details

Create a new Update existing group chat room data.

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>
  
[[TAPCoreChatRoomManager sharedManager] updateGroupChatRoomDetailsWithGroupRoomID:GROUP_ROOM_ID groupName:GROUP_NAME success:^(TAPRoomModel * _Nonnull room) {
    
} failure:^(NSError * _Nonnull error) {
    
}];

Parameters GROUP_ROOM_ID: (String) room ID of group GROUP_NAME: (String) name of group

Update Group Image

Update group picture with current selected image.

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>
  
[[TAPCoreChatRoomManager sharedManager] updateGroupPicture:GROUP_IMAGE roomID:GROUP_ROOM_ID successBlock:^(TAPRoomModel * _Nonnull room) {
    //success update group profile image
} progressBlock:^(CGFloat progress, CGFloat total) {
    //Handle upload image progress
} failureBlock:^(NSError * _Nonnull error) {
    //Failed update group profile image
}];

Parameters GROUP_IMAGE: (UIImage) image of group profile GROUP_ROOM_ID: (String) room ID of group

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.

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>

[[TAPCoreChatRoomManager sharedManager] deleteLocalGroupChatRoom:ROOM_ID success:^{
    //Success delete group chat room
} failure:^(NSError * _Nonnull error) {
    //Failed delete group chat room
}];

Parameters ROOM_ID: (NSString) group room ID to be deleted

Delete Group Chat Room

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

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>

[[TAPCoreChatRoomManager sharedManager] deleteGroupChatRoom:GROUP_ROOM success:^{
    //Success delete group chat room
} failure:^(NSError * _Nonnull error) {
    //Failed delete group chat room
}];

Parameters GROUP_ROOM: (TAPRoomModel) group room to be deleted

Leave Group Chat

Leave from selected group chat.

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>
  
[[TAPCoreChatRoomManager sharedManager] leaveGroupChatRoomWithRoomID:GROUP_ROOM_ID success:^{
    //Success leave group chat room
} failure:^(NSError * _Nonnull error) {
    //Failed leave group chat room
}];

Parameters GROUP_ROOM_ID: (String) room ID of group

Add Members to Group Chat

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

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>
  
[[TAPCoreChatRoomManager sharedManager] addGroupChatMembersWithUserIDArray:PARTICIPANTS_USER_ID_ARRAY roomID:GROUP_ROOM_ID success:^(TAPRoomModel * _Nonnull room) {
    //Success add members to group
} failure:^(NSError * _Nonnull error) {
    //Failed add members to group
}];

Parameters PARTICIPANTS_USER_ID_ARRAY: (Array ) list of participant userIDs GROUP_ROOM_ID: (String) room ID of group

Remove Members from Group Chat

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

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>
  
[[TAPCoreChatRoomManager sharedManager] removeGroupChatMembersWithUserIDArray:PARTICIPANTS_USER_ID_ARRAY roomID:GROUP_ROOM_ID success:^(TAPRoomModel * _Nonnull room) {
    //Success remove members from group
} failure:^(NSError * _Nonnull error) {
    //Failed remove members from group
}];

Parameters PARTICIPANTS_USER_ID_ARRAY: (Array ) list of participant userIDs GROUP_ROOM_ID: (String) room ID of group

Promote Group Admin

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

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>
  
[[TAPCoreChatRoomManager sharedManager] promoteGroupAdminsWithUserIDArray:USER_ID_ARRAY roomID:GROUP_ROOM_ID success:^(TAPRoomModel * _Nonnull room) {
    //Success promote member to admin
} failure:^(NSError * _Nonnull error) {
    //Failed promote member to admin
}];

Parameters USER_ID_ARRAY: (Array ) list of userIDs GROUP_ROOM_ID: (String) room ID of group

Demote Group Admin

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

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>
  
[[TAPCoreChatRoomManager sharedManager] demoteGroupAdminsWithUserIDArray:USER_ID_ARRAY roomID:GROUP_ROOM_ID success:^(TAPRoomModel * _Nonnull room) {
    //Success demote admin to member
} failure:^(NSError * _Nonnull error) {
    //Failed demote admin to member
}];

Parameters USER_ID_ARRAY: (Array ) list of userIDs GROUP_ROOM_ID: (String) room ID of group

Get Saved Messages Chat Room

Obtain Saved Messages chat room data.

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>

[[TAPCoreChatRoomManager sharedManager] getSavedMessagesChatRoom:^(TAPRoomModel * _Nonnull room) {
   //Success get chat room data
} failure:^(NSError * _Nonnull error) {
   //Failed get chat room data
}];

Send Start Typing

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

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>

[[TAPCoreChatRoomManager sharedManager] sendStartTypingEmitWithRoomID:GROUP_ROOM_ID];

Parameters GROUP_ROOM_ID: (String) room ID of group

Send Stop Typing

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

//import TapTalk Chat Room Manager
#import <TapTalk/TAPCoreChatRoomManager.h>

[[TAPCoreChatRoomManager sharedManager] sendStopTypingEmitWithRoomID:GROUP_ROOM_ID];

Parameters GROUP_ROOM_ID: (String) room ID of group

Send Text Message

To send a text message to a chat room, use the sendTextMessage:room:start:success:failure: method from the TapCoreMessageManager class.

// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send text message
[[TAPCoreMessageManager sharedManager] sendTextMessage:MESSAGE_BODY
                                                  room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];

Use the sendTextMessage:quotedMessage:room:start:success:failure: method to send a text message with quote.

// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send text message with quote
[[TAPCoreMessageManager sharedManager] sendTextMessage:MESSAGE_BODY
                                         quotedMessage:QUOTED_MESSAGE
                                                  room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];

Parameters MESSAGE_BODY: (String) content of the message ROOM: (TAPRoomModel) the destination room where the message will be sent QUOTED_MESSAGE: (TAPMessageModel) quote containing another existing message

Send Location Message

You can send a location embedded in a chat message using sendLocationMessageWithLatitude:longitude:address:room:start:success:failure:. This method takes latitude, longitude, and address text as parameters.

// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send location message
[[TAPCoreMessageManager sharedManager] sendLocationMessageWithLatitude:LATITUDE
                                                             longitude:LONGITUDE
                                                               address:ADDRESS
                                                                  room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed  
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];

Use the sendLocationMessageWithLatitude:longitude:quotedMessage:address:room:start:success:failure: method to send a location message with quote.

// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send location message with quote
[[TAPCoreMessageManager sharedManager] sendLocationMessageWithLatitude:LATITUDE
                                                             longitude:LONGITUDE
                                                         quotedMessage:QUOTED_MESSAGE
                                                               address:ADDRESS
                                                                  room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed  
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];

Parameters LATITUDE: (Float) latitude of the shared location LONGITUDE: (Float) longitude of the shared location ADDRESS: (String) text data containing the location address ROOM: (TAPRoomModel) the destination room where the message will be sent QUOTED_MESSAGE: (TAPMessageModel) quote containing another existing message

Send Image Message

To send an image to a chat room, you can use sendImageMessage: or sendImageMessageWithAsset: method by providing either UIImage, PHAsset , IMAGE_ASSET_URL, or IMAGE_URL as parameter.

// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send image using UIImage
[[TAPCoreMessageManager sharedManager] sendImageMessage:IMAGE
                                                caption:CAPTION
                                                  room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
progress:^(TAPMessageModel * _Nullable message, CGFloat progress, CGFloat total) {
    // Image upload is in progress
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];
// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send image using PHAsset
[[TAPCoreMessageManager sharedManager] sendImageMessageWithAsset:IMAGE_ASSET
                                                         caption:CAPTION
                                                            room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
progress:^(TAPMessageModel * _Nullable message, CGFloat progress, CGFloat total) {
    // Image upload is in progress
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];
// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send image using image asset URL
[[TAPCoreMessageManager sharedManager] sendImageMessageWithURL:IMAGE_ASSET_URL
                                                       caption:CAPTION
                                                          room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
progress:^(TAPMessageModel * _Nullable message, CGFloat progress, CGFloat total) {
    // Image upload is in progress
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];
// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send image using remote image URL
[[TAPCoreMessageManager sharedManager] sendImageMessageWithRemoteUrl:IMAGE_URL
                                                             caption:CAPTION
                                                                room:ROOM
                                                       fetchMetadata:FETCH_METADATA
temporaryMessageCreated:^(TAPMessageModel * _Nonnull message) {
    // Temporary message was created while fetching metadata
    // This callback will be called when FETCH_METADATA is true
}
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];

Use the sendImageMessage: or sendImageMessageWithAsset: or sendImageMessageWithRemoteUrl: method with extra parameter to send an image message with quote.

// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send image using UIImage with quote
[[TAPCoreMessageManager sharedManager] sendImageMessage:IMAGE
                                          quotedMessage:QUOTED_MESSAGE
                                                caption:CAPTION
                                                  room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
progress:^(TAPMessageModel * _Nullable message, CGFloat progress, CGFloat total) {
    // Image upload is in progress
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];
// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send image using PHAsset with quote
[[TAPCoreMessageManager sharedManager] sendImageMessageWithAsset:IMAGE_ASSET
                                                   quotedMessage:QUOTED_MESSAGE
                                                         caption:CAPTION
                                                            room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
progress:^(TAPMessageModel * _Nullable message, CGFloat progress, CGFloat total) {
    // Image upload is in progress
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];
// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send image using image asset URL with quote
[[TAPCoreMessageManager sharedManager] sendImageMessageWithURL:IMAGE_ASSET_URL
                                                 quotedMessage:QUOTED_MESSAGE
                                                       caption:CAPTION
                                                          room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
progress:^(TAPMessageModel * _Nullable message, CGFloat progress, CGFloat total) {
    // Image upload is in progress
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];
// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send image using remote image URL with quote
[[TAPCoreMessageManager sharedManager] sendImageMessageWithRemoteUrl:IMAGE_URL
                                                             caption:CAPTION
                                                                room:ROOM
                                                       quotedMessage:QUOTED_MESSAGE
                                                       fetchMetadata:FETCH_METADATA
temporaryMessageCreated:^(TAPMessageModel * _Nonnull message) {
    // Temporary message was created while fetching metadata
    // This callback will be called when FETCH_METADATA is true
}
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];

Parameters IMAGE: (UIImage) selected image with UIImage type IMAGE_ASSET: (PHAsset) selected image asset data IMAGE_ASSET_URL: (NSURL) local URL of the image asset IMAGE_URL: (String) remote URL of the image CAPTION: (String) caption for the image ROOM: (TAPRoomModel) the destination room where the message will be sent QUOTED_MESSAGE: (TAPMessageModel) quote containing another existing message FETCH_METADATA: (BOOL) inserts metadata from remote URL to the constructed message when true

Send Video Message

To send a video to a chat room, you can use sendVideoMessageWithAsset: method by providing the VIDEO_ASSET, VIDEO_ASSET_URL, or a remote VIDEO_URL as parameter.

// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send video using video asset (PHAsset)
[[TAPCoreMessageManager sharedManager] sendVideoMessageWithAsset:VIDEO_ASSET
                                                         caption:CAPTION
                                                            room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
progress:^(TAPMessageModel * _Nullable message, TAPMessageModel * _Nullable message, CGFloat progress, CGFloat total) {
    // Video upload is in progress
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];
// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send video using video asset URL
[[TAPCoreMessageManager sharedManager] sendVideoMessageWithVideoAssetURL:VIDEO_ASSET_URL
                                                                 caption:CAPTION
                                                                    room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
progress:^(TAPMessageModel * _Nullable message, TAPMessageModel * _Nullable message, CGFloat progress, CGFloat total) {
    // Video upload is in progress
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];
// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send video using remote video URL
[[TAPCoreMessageManager sharedManager] sendVideoMessageWithRemoteUrl:VIDEO_URL
                                                             caption:CAPTION
                                                                room:ROOM 
                                                       fetchMetaData:FETCH_METADATA
temporaryMessageCreated:^(TAPMessageModel * _Nonnull message) {
    // Temporary message was created while fetching metadata
    // This callback will be called when FETCH_METADATA is true
}
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];

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

// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send video using video asset (PHAsset) with quote
[[TAPCoreMessageManager sharedManager] sendVideoMessageWithAsset:VIDEO_ASSET
                                                   quotedMessage:QUOTED_MESSAGE
                                                         caption:CAPTION
                                                            room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
progress:^(TAPMessageModel * _Nullable message, TAPMessageModel * _Nullable message, CGFloat progress, CGFloat total) {
    // Video upload is in progress
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];
// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send video using video asset URL with quote
[[TAPCoreMessageManager sharedManager] sendVideoMessageWithVideoAssetURL:VIDEO_ASSET_URL
                                                           quotedMessage:QUOTED_MESSAGE
                                                                 caption:CAPTION
                                                                    room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
progress:^(TAPMessageModel * _Nullable message, TAPMessageModel * _Nullable message, CGFloat progress, CGFloat total) {
    // Video upload is in progress
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];
// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send video using remote video URL with quote
[[TAPCoreMessageManager sharedManager] sendVideoMessageWithRemoteUrl:VIDEO_URL
                                                             caption:CAPTION
                                                                room:ROOM
                                                       quotedMessage:QUOTED_MESSAGE
                                                       fetchMetaData:FETCH_METADATA
temporaryMessageCreated:^(TAPMessageModel * _Nonnull message) {
    // Temporary message was created while fetching metadata
    // This callback will be called when FETCH_METADATA is true
}
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];

Parameters VIDEO_ASSET: (PHAsset) selected videos asset data VIDEO_ASSET_URL: (NSURL) local URL of the video asset VIDEO_URL: (String) remote URL of the video CAPTION: (String) caption for the video ROOM: (TAPRoomModel) the destination room where the message will be sent QUOTED_MESSAGE: (TAPMessageModel) quote containing another existing message FETCH_METADATA: (BOOL) inserts metadata from remote URL to the constructed message when true

Send File Message

You can also send a file to a chat room using sendFileMessageWithFileURI: or sendFileMessageWithRemoteUrl:.

// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send file using file asset URL
[[TAPCoreMessageManager sharedManager] sendFileMessageWithFileURI:FILE_ASSET_URL
                                                             room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
} 
progress:^(TAPMessageModel * _Nullable message, CGFloat progress, CGFloat total) {
    // File upload is in progress
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];
// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send file using remote file URL
[[TAPCoreMessageManager sharedManager] sendFileMessageWithRemoteUrl:FILE_URL
                                                            caption:CAPTION
                                                               room:ROOM
                                                      fetchMetadata:FETCH_METADATA
temporaryMessageCreated:^(TAPMessageModel * _Nonnull message) {
    // Temporary message was created while fetching metadata
    // This callback will be called when FETCH_METADATA is true
}
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];
// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send file using remote file URL, file name, and mime type
[[TAPCoreMessageManager sharedManager] sendFileMessageWithRemoteUrl:FILE_URL
                                                            caption:CAPTION
                                                               room:ROOM
                                                           fileName:FILE_NAME
                                                           mimeType:MIME_TYPE
                                                      fetchMetadata:FETCH_METADATA
temporaryMessageCreated:^(TAPMessageModel * _Nonnull message) {
    // Temporary message was created while fetching metadata
    // This callback will be called when FETCH_METADATA is true
}
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];

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

// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send file using file asset URL with quote
[[TAPCoreMessageManager sharedManager] sendFileMessageWithFileURI:FILE_ASSET_URL
                                                    quotedMessage:QUOTED_MESSAGE
                                                             room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
} 
progress:^(TAPMessageModel * _Nullable message, CGFloat progress, CGFloat total) {
    // File upload is in progress
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];
// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send file using remote file URL with quote
[[TAPCoreMessageManager sharedManager] sendFileMessageWithRemoteUrl:FILE_URL
                                                            caption:CAPTION
                                                               room:ROOM
                                                      quotedMessage:QUOTED_MESSAGE
                                                      fetchMetadata:FETCH_METADATA
temporaryMessageCreated:^(TAPMessageModel * _Nonnull message) {
    // Temporary message was created while fetching metadata
    // This callback will be called when FETCH_METADATA is true
}
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];
// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send file using remote file URL, file name, and mime type with quote
[[TAPCoreMessageManager sharedManager] sendFileMessageWithRemoteUrl:FILE_URL
                                                            caption:CAPTION
                                                               room:ROOM
                                                      quotedMessage:QUOTED_MESSAGE
                                                           fileName:FILE_NAME
                                                           mimeType:MIME_TYPE
                                                      fetchMetadata:FETCH_METADATA
temporaryMessageCreated:^(TAPMessageModel * _Nonnull message) {
    // Temporary message was created while fetching metadata
    // This callback will be called when FETCH_METADATA is true
}
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];

Parameters FILE_ASSET_URL: (NSURL) file path of the selected file FILE_URL: (String) remote URL of the video CAPTION: (String) caption for the video ROOM: (TAPRoomModel) the destination room where the message will be sent QUOTED_MESSAGE: (TAPMessageModel) quote containing another existing message FILE_NAME: (String) file name to be included in message data MIME_TYPE: (String) mime type to be included in message data, set to empty to fetch default mime type from the provided URL FETCH_METADATA: (BOOL) inserts metadata from remote URL to the constructed message when true

Send Voice Message

You can also send a voice note to a chat room using the sendVoiceMessageWithFileURI: method with a provided FILE_URI (NSURL).

// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

[[TAPCoreMessageManager sharedManager] sendVoiceMessageWithFileURI:AUDIO_ASSET_URL
                                                              room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
progress:^(TAPMessageModel * _Nullable message, CGFloat progress, CGFloat total) {
    // File upload is in progress
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];

Use the sendVoiceMessageWithFileURI: method with extra parameter to send a voice message with quote.

// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

[[TAPCoreMessageManager sharedManager] sendVoiceMessageWithFileURI:AUDIO_ASSET_URL
                                                     quotedMessage:QUOTED_MESSAGE
                                                              room:ROOM
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
progress:^(TAPMessageModel * _Nullable message, CGFloat progress, CGFloat total) {
    // File upload is in progress
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];

Parameters AUDIO_ASSET_URL: (NSURL) file path of the selected audio CAPTION: (String) caption for the video ROOM: (TAPRoomModel) the destination room where the message will be sent QUOTED_MESSAGE: (TAPMessageModel) quote containing another existing message

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

// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send link message
[[TAPCoreMessageManager sharedManager] sendLinkMessage:MESSAGE_BODY
                                                  room:ROOM
                                                  urls:URLS
                                                 title:TITLE
                                           description:DESCRIPTION
                                                 image:IMAGE
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    //Failed send link message
}];
// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send link message with additional metadata parameters
[[TAPCoreMessageManager sharedManager] sendLinkMessage:MESSAGE_BODY
                                                  room:ROOM
                                                  urls:URLS
                                                 title:TITLE
                                           description:DESCRIPTION
                                                 image:IMAGE
                                              siteName:SITE_NAME
                                                  type:TYPE
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];

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

// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send link message with quote
[[TAPCoreMessageManager sharedManager] sendLinkMessage:MESSAGE_BODY
                                         quotedMessage:QUOTED_MESSAGE
                                                  room:ROOM
                                                  urls:URLS
                                                 title:TITLE
                                           description:DESCRIPTION
                                                 image:IMAGE
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];
// import TapTalk Message Manager
#import <TapTalk/TAPCoreMessageManager.h>

// Send link message with quote and additional metadata parameters
[[TAPCoreMessageManager sharedManager] sendLinkMessage:MESSAGE_BODY
                                         quotedMessage:QUOTED_MESSAGE
                                                  room:ROOM
                                                  urls:URLS
                                                 title:TITLE
                                           description:DESCRIPTION
                                                 image:IMAGE
                                              siteName:SITE_NAME
                                                  type:TYPE
start:^(TAPMessageModel * _Nonnull message) {
    // Message was constructed
}
success:^(TAPMessageModel * _Nonnull message) {
    // Message was sent successfully
}
failure:^(TAPMessageModel * _Nullable message, NSError * _Nonnull error) {
    // Failed to send message
}];

Parameters MESSAGE_BODY: (String) content of the message ROOM: (TAPRoomModel) the destination room where the message will be sent QUOTED_MESSAGE: (TAPMessageModel) quote containing another existing message URLS: (NSArray<String>) list of URLs contained in the message TITLE: (String) og:title metadata of the specified URL DESCRIPTION: (String) og:description metadata of the specified URL IMAGE: (String) og:image metadata of the specified URL SITE_NAME: (String) og:site_name metadata of the specified URL TYPE: (String) og:type metadata of the specified URL

Forward Message

To forward existing messages to chat room, call the sendForwardedMessage: method. You may also use sendForwardedMessageWithMessageArray: to forward multiple messages at once, or sendForwardedMessage:toMultipleRooms: or sendForwardedMessageWithMessageArray:toMultipleRooms: to forward messages to multiple rooms at once.