BMXChatManager Protocol Reference
Conforms to NSObject
Declared in BMXChatManager.h
Overview
聊天管理器
Instance Methods
ackMessage:
发送已读回执
- (void)ackMessage:(BMXMessageObject *)*message*
Discussion
发送已读回执
Declared In
BMXChatManager.h
- (void)ackMessage:(NSArray<LHMessageModel *> *)modelArray {
for (LHMessageModel *model in modelArray) {
if ([model.class isKindOfClass:[LHMessageModel class]]) {
continue;
}
if (!model.isSender && model.messageObjc.isReadAcked == NO) {
[[[BMXClient sharedClient] chatService] ackMessage:model.messageObjc];
- (void)ackMessagebyModel:(LHMessageModel *)model {
if (!model.isSender == YES && model.messageObjc.isReadAcked == NO) {
[[[BMXClient sharedClient] chatService] ackMessage:model.messageObjc];
- (void)ackMessagebyMessageObject:(BMXMessageObject *)messageObject {
NSString *fromIdStr = [NSString stringWithFormat:@"%lld", messageObject.fromId];
if (![fromIdStr isEqualToString:self.account.usedId] && messageObject.isRead == NO) {
[[[BMXClient sharedClient] chatService] ackMessage:messageObject];
- (void)ackMessage:(NSArray<LHMessageModel *> *)modelArray {
for (LHMessageModel *model in modelArray) {
if ([model.class isKindOfClass:[LHMessageModel class]]) {
continue;
}
if (!model.isSender && model.messageObjc.isReadAcked == NO) {
[[[BMXClient sharedClient] chatService] ackMessage:model.messageObjc];
}
}
}
ackMessageDelivered:
发送送达回执
- (void)ackMessageDelivered:(BMXMessageObject *)*message*
Discussion
发送送达回执
Declared In
BMXChatManager.h
addChatListener:
添加聊天监听者
- (void)addChatListener:(id<BMXChatServiceProtocol>)*listener*
Discussion
添加聊天监听者
Declared In
BMXChatManager.h
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
[self setUpNavItem];
[[[BMXClient sharedClient] chatService] addChatListener:self];
addDelegate:
- (void)addDelegate:(id<BMXChatServiceProtocol>)*aDelegate*
- (void)registerAPNs {
[[[BMXClient sharedClient] pushService] start];
[[[BMXClient sharedClient] pushService] addDelegate:self];
- (void)viewDidLoad {
[super viewDidLoad];
[self configCollectionView];
self.view.clipsToBounds = YES;
[[[BMXClient sharedClient] chatService] addDelegate:self];
- (void)addIMListener {
BMXClient *client = [BMXClient sharedClient];
[[client rosterService] addDelegate:self];
- (void)addIMListener {
BMXClient *client = [BMXClient sharedClient];
[[client rosterService] addDelegate:self];
[[client chatService] addDelegate:self];
- (void)addIMListener {
BMXClient *client = [BMXClient sharedClient];
[[client rosterService] addDelegate:self];
[[client chatService] addDelegate:self];
[[client userService] addDelegate:self];
- (void)addIMListener {
BMXClient *client = [BMXClient sharedClient];
[[client rosterService] addDelegate:self];
[[client chatService] addDelegate:self];
[[client userService] addDelegate:self];
[[client groupService] addDelegate:self];
addDelegate:delegateQueue:
- (void)addDelegate:(id<BMXChatServiceProtocol>)*aDelegate* delegateQueue:(dispatch_queue_t)*aQueue*
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
self.automaticallyAdjustsScrollViewInsets = NO;
self.account = [IMAcountInfoStorage loadObject];
[self getMyProfile];
[self setUpNavItem];
[self setupSubview];
[self loadMessages];
[self scrollToBottomAnimated:NO refresh:NO];
[[[BMXClient sharedClient] chatService] addDelegate:self delegateQueue:dispatch_get_main_queue()];
deleteConversationByConversationId:synchronize:
删除会话
- (void)deleteConversationByConversationId:(NSInteger)*conversationId* synchronize:(BOOL)*synchronize*
Discussion
删除会话
Declared In
BMXChatManager.h
- (void)removeconversation:(BMXConversation *)conversation {
[[[BMXClient sharedClient]chatService] deleteConversationByConversationId:conversation.conversationId synchronize:YES];
downloadAttachment:
下载附件,下载状态变化和进度通过listener通知
- (void)downloadAttachment:(BMXMessageObject *)*message*
Discussion
下载附件,下载状态变化和进度通过listener通知
Declared In
BMXChatManager.h
BMXVoiceAttachment *voiceAtt = (BMXVoiceAttachment *)message.attachment;
dbMessageModel.vociePath = voiceAtt.path;
dbMessageModel.content = [NSString stringWithFormat:@" %d s",voiceAtt.duration];
[self.dataSource insertObject:dbMessageModel atIndex:0];
[self.messages insertObject:dbMessageModel atIndex:0];
if (![[NSFileManager defaultManager] fileExistsAtPath:dbMessageModel.vociePath]) {
[[[BMXClient sharedClient] chatService] downloadAttachment:message];
dbMessageModel.type = MessageBodyType_Location;
[self.dataSource insertObject:dbMessageModel atIndex:0];
[self.messages insertObject:dbMessageModel atIndex:0];
} else if (message.contentType == BMXContentTypeFile) {
BMXFileAttachment *fileAtt = (BMXFileAttachment *)message.attachment;
dbMessageModel.content = fileAtt.displayName ? fileAtt.displayName : @"file";
dbMessageModel.type = MessageBodyType_File;
if (![[NSFileManager defaultManager] fileExistsAtPath:fileAtt.path]) {
[[[BMXClient sharedClient] chatService] downloadAttachment:message];
- (void)chatVideoCellBubblePressed:(LHMessageModel *)model {
if (model.videoPath && ![model.videoPath isKindOfClass:[NSNull class]] && [[NSFileManager defaultManager] fileExistsAtPath:model.videoPath]) {
[self videoPlay:model.videoPath];
} else {
[[[BMXClient sharedClient] chatService] downloadAttachment:model.messageObjc];
dbMessageModel.messageObjc = message;
[[LHIMDBManager shareManager] insertModel:dbMessageModel];
NSIndexPath *index = [self insertNewMessageOrTime:dbMessageModel];
[self.messages addObject:dbMessageModel];
[self.tableView scrollToRowAtIndexPath:index atScrollPosition:UITableViewScrollPositionBottom animated:YES];
} else if (message.contentType == BMXContentTypeImage) {
[[[BMXClient sharedClient] chatService] downloadThumbnail:message strategy:ThirdpartyServerCreate];
[[[BMXClient sharedClient] chatService] downloadAttachment:message];
[[LHIMDBManager shareManager] insertModel:dbMessageModel];
NSIndexPath *index = [self insertNewMessageOrTime:dbMessageModel];
[self.messages addObject:dbMessageModel];
[self.tableView scrollToRowAtIndexPath:index atScrollPosition:UITableViewScrollPositionBottom animated:YES];
} else if (message.contentType == BMXContentTypeImage) {
[[[BMXClient sharedClient] chatService] downloadThumbnail:message strategy:ThirdpartyServerCreate];
[[[BMXClient sharedClient] chatService] downloadAttachment:message];
} else if (message.contentType == BMXContentTypeVoice) {
[[[BMXClient sharedClient] chatService] downloadAttachment:message];
dbMessageModel.status = MessageDeliveryState_Delivered;
dbMessageModel.isSender = NO;
dbMessageModel.type = MessageBodyType_Location;
dbMessageModel.messageObjc = message;
[[LHIMDBManager shareManager] insertModel:dbMessageModel];
NSIndexPath *index = [self insertNewMessageOrTime:dbMessageModel];
[self.messages addObject:dbMessageModel];
[self.tableView scrollToRowAtIndexPath:index atScrollPosition:UITableViewScrollPositionBottom animated:YES];
} else if (message.contentType == BMXContentTypeFile) {
[[[BMXClient sharedClient] chatService] downloadAttachment:message];
- (void)setModels:(NSArray *)models {
LHMessageModel *messagemodel = models.firstObject;
BMXImageAttachment *attachment = (BMXImageAttachment *)messagemodel.messageObjc.attachment;
if (attachment.path == nil || [@"" isEqualToString:attachment.path] || ![[NSFileManager defaultManager] fileExistsAtPath:attachment.path]) {
[[[BMXClient sharedClient] chatService] downloadAttachment:messagemodel.messageObjc];
downloadThumbnail:strategy:
下载缩略图,下载状态变化和进度通过listener通知 缩略图生成策略,1 - 第三方服务器生成, 2 - 本地服务器生成,默认值是 1。
- (void)downloadThumbnail:(BMXMessageObject *)*message* strategy:(ThumbnailStrategy)*strategy*
Discussion
下载缩略图,下载状态变化和进度通过listener通知 缩略图生成策略,1 - 第三方服务器生成, 2 - 本地服务器生成,默认值是 1。
Declared In
BMXChatManager.h
} else if (message.contentType == BMXContentTypeImage) {
dbMessageModel.type = MessageBodyType_Image;
BMXImageAttachment *imageAtt = (BMXImageAttachment *)message.attachment;
dbMessageModel.width = imageAtt.pictureSize.width;
dbMessageModel.height = imageAtt.pictureSize.height;
dbMessageModel.imageRemoteURL = imageAtt.thumbnailPath;
[self.dataSource insertObject:dbMessageModel atIndex:0];
[self.messages insertObject:dbMessageModel atIndex:0];
if (![[NSFileManager defaultManager] fileExistsAtPath:dbMessageModel.imageRemoteURL]) {
[[[BMXClient sharedClient] chatService] downloadThumbnail:message strategy:ThirdpartyServerCreate];
dbMessageModel.content = videoAtt.displayName ? videoAtt.displayName : @"video";
dbMessageModel.type = MessageBodyType_Video;
// MAXLog(@"%f, %f", videoAtt.size.width, videoAtt.size.height)
dbMessageModel.width = videoAtt.videoSize.width;
dbMessageModel.height = videoAtt.videoSize.height;
dbMessageModel.imageRemoteURL = videoAtt.thumbnailPath;
dbMessageModel.videoPath = videoAtt.path;
if (![[NSFileManager defaultManager] fileExistsAtPath:dbMessageModel.imageRemoteURL]) {
[[[BMXClient sharedClient] chatService] downloadThumbnail:message strategy:ThirdpartyServerCreate];
dbMessageModel.status = MessageDeliveryState_Delivered;
dbMessageModel.type = MessageBodyType_Text;
dbMessageModel.messageObjc = message;
[[LHIMDBManager shareManager] insertModel:dbMessageModel];
NSIndexPath *index = [self insertNewMessageOrTime:dbMessageModel];
[self.messages addObject:dbMessageModel];
[self.tableView scrollToRowAtIndexPath:index atScrollPosition:UITableViewScrollPositionBottom animated:YES];
} else if (message.contentType == BMXContentTypeImage) {
[[[BMXClient sharedClient] chatService] downloadThumbnail:message strategy:ThirdpartyServerCreate];
dbMessageModel.type = MessageBodyType_Location;
dbMessageModel.messageObjc = message;
[[LHIMDBManager shareManager] insertModel:dbMessageModel];
NSIndexPath *index = [self insertNewMessageOrTime:dbMessageModel];
[self.messages addObject:dbMessageModel];
[self.tableView scrollToRowAtIndexPath:index atScrollPosition:UITableViewScrollPositionBottom animated:YES];
} else if (message.contentType == BMXContentTypeFile) {
[[[BMXClient sharedClient] chatService] downloadAttachment:message];
}else if (message.contentType == BMXContentTypeVideo) {
[[[BMXClient sharedClient] chatService] downloadThumbnail:message strategy:ThirdpartyServerCreate];
forwardMessage:
简单转发消息,用户应当通过BMXMessagse::createForwardMessage()先创建转发消息 *
- (void)forwardMessage:(BMXMessageObject *)*message*
Discussion
简单转发消息,用户应当通过BMXMessagse::createForwardMessage()先创建转发消息 *
Declared In
BMXChatManager.h
- (void)transterSlectedGroup:(BMXGroup *)group {
BMXMessageObject *m = [[BMXMessageObject alloc] initWithForwardMessage:self.currentMessage.messageObjc fromId:[self.account.usedId longLongValue] toId:group.groupId type:BMXMessageTypeGroup conversationId:group.groupId];
// m.enableGroupAck = YES;
[[[BMXClient sharedClient] chatService] forwardMessage:m];
- (void)groupOwnerTransterVCdidSelect:(id)toModel {
BMXRoster *roster = toModel;
BMXMessageObject *m = [[BMXMessageObject alloc] initWithForwardMessage:self.currentMessage.messageObjc fromId:[self.account.usedId longLongValue] toId:roster.rosterId type:BMXMessageTypeSingle conversationId:roster.rosterId];
// m.enableGroupAck = YES;
[[[BMXClient sharedClient] chatService] forwardMessage:m];
getAllConversationsUnreadCountWithCompletion:
获取所有会话的全部未读数(标记为屏蔽的个人和群组的未读数不统计在内)
- (void)getAllConversationsUnreadCountWithCompletion:(void ( ^ ) ( int count ))*aCompletionBlock*
Parameters
aCompletionBlock
count
Discussion
获取所有会话的全部未读数(标记为屏蔽的个人和群组的未读数不统计在内)
Declared In
BMXChatManager.h
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
[self setUpNavItem];
[[[BMXClient sharedClient] chatService] addChatListener:self];
[NetWorkingManager netWorkingManagerWithNetworkStatusListening];
[self p_addObserver];
[[[BMXClient sharedClient] chatService] getAllConversationsUnreadCountWithCompletion:^(int count) {
getAllConversationsWithCompletion:
获取所有会话
- (void)getAllConversationsWithCompletion:(void ( ^ ) ( NSArray *conversations ))*aCompletionBlock*
Discussion
获取所有会话
Declared In
BMXChatManager.h
- (void)getAllConversations{
dispatch_async(dispatch_get_main_queue(), ^{
[HQCustomToast showWating];
});
[[[BMXClient sharedClient] chatService] getAllConversationsWithCompletion:^(NSArray *conversations) {
getAttachmentDir
获取附件保存路径
- (NSString *)getAttachmentDir
Discussion
获取附件保存路径
Declared In
BMXChatManager.h
- (NSString *)recorderMainPath
{
// NSString* dataDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"CWVoice"];
NSString *path = [[[[BMXClient sharedClient] chatService] getAttachmentDir] stringByAppendingPathComponent:kChildPath];
- (void)moreViewFileAction:(LHChatBarMoreView *)moreView {
// 进入页面管理,选择文件
if (SystemVersion >= 11.0) {
[self displayChooseFileViewController];
} else {
ICDocumentViewController *docVC = [[ICDocumentViewController alloc] init];
docVC.delegate = self;
NSString *filePath = [[[[BMXClient sharedClient] chatService] getAttachmentDir] stringByAppendingPathComponent:@"file"];
getAttachmentDirForConversationWith:
获取会话的附件保存路径
- (NSString *)getAttachmentDirForConversationWith:(NSString *)*conversationId*
Discussion
获取会话的附件保存路径
Declared In
BMXChatManager.h
getGroupAckMessageUnreadUserIdListWithMessage:completion:
获取发送的群组消息未读用户id列表
- (void)getGroupAckMessageUnreadUserIdListWithMessage:(BMXMessageObject *)*message* completion:(void ( ^ ) ( NSArray *groupMemberIdList , BMXError *error ))*aCompletionBlock*
Parameters
message
需要获取未读用户id列表的消息
aCompletionBlock
对该条消息未读的用户id列表,初始传入为空列表
Discussion
获取发送的群组消息未读用户id列表
Declared In
BMXChatManager.h
- (void)getUnreadRoster {
MAXLog(@"拉取未读群成员");
[[[BMXClient sharedClient] chatService] getGroupAckMessageUnreadUserIdListWithMessage:self.message completion:^(NSArray *groupMemberIdList, BMXError *error) {
getGroupAckMessageUserIdListWithMessage:completion:
获取发送的群组消息已读用户id列表
- (void)getGroupAckMessageUserIdListWithMessage:(BMXMessageObject *)*message* completion:(void ( ^ ) ( NSArray *groupMemberIdList , BMXError *error ))*aCompletionBlock*
Parameters
message
需要获取已读用户id列表的消息
aCompletionBlock
对该条消息已读的用户id列表,初始传入为空列表
Discussion
获取发送的群组消息已读用户id列表
Declared In
BMXChatManager.h
- (void)getAlreadyRoster {
[[[BMXClient sharedClient] chatService] getGroupAckMessageUserIdListWithMessage:self.message completion:^(NSArray *groupMemberIdList, BMXError *error) {
getMessage:completion:
读取一条消息
- (void)getMessage:(NSInteger)*messageId* completion:(void ( ^ ) ( BMXMessageObject *message , BMXError *error ))*aCompletionBlock*
Discussion
读取一条消息
Declared In
BMXChatManager.h
insetMessages:completion:
插入消息
- (void)insetMessages:(NSArray<BMXMessageObject*> *)*list* completion:(void ( ^ ) ( BMXError *error ))*aCompletionBlock*
Discussion
插入消息
Declared In
BMXChatManager.h
openConversation:type:createIfNotExist:
打开一个会话
- (BMXConversation *)openConversation:(NSInteger)*conversationId* type:(BMXConversationType)*type* createIfNotExist:(bool)*create*
Discussion
打开一个会话
Declared In
BMXChatManager.h
- (void)loadMessages {
BMXConversation *conversation;
if (self.messageType == BMXConversationGroup) {
self.conversationId = self.conversationId ?self.conversationId : (NSInteger)self.currentGroup.groupId;
BMXConversation *groupConversation = [[[BMXClient sharedClient] chatService] openConversation:self.conversationId type:BMXConversationGroup createIfNotExist:YES];
- (void)loadMessages {
BMXConversation *conversation;
if (self.messageType == BMXConversationGroup) {
self.conversationId = self.conversationId ?self.conversationId : (NSInteger)self.currentGroup.groupId;
BMXConversation *groupConversation = [[[BMXClient sharedClient] chatService] openConversation:self.conversationId type:BMXConversationGroup createIfNotExist:YES];
conversation = groupConversation;
} else {
self.conversationId = self.conversationId ? self.conversationId: (NSInteger)self.currentRoster.rosterId;
BMXConversation *singleConversation = [[[BMXClient sharedClient] chatService] openConversation:self.conversationId type:BMXConversationSingle createIfNotExist:YES];
- (void)receiveNewMessage:(BMXMessageObject *)message {
long long conversationId = message.conversationId;
BOOL hasConversation = NO;
NSArray *temp = [self.conversatonList copy];
for (BMXConversation *conversation in temp) {
if (conversationId == conversation.conversationId) {
hasConversation = YES;
[self getProfiletWithConversations:temp];
break;
}
}
if (!hasConversation) {
BMXConversationType type;
if (message.messageType == BMXMessageTypeSingle) {
type = BMXConversationSingle;
} else {
type = BMXConversationGroup;
}
BMXConversation *conversation = [[[BMXClient sharedClient] chatService] openConversation:conversationId type:type createIfNotExist:YES];
}
}
if (!hasConversation) {
BMXConversationType type;
if (message.messageType == BMXMessageTypeSingle) {
type = BMXConversationSingle;
} else {
type = BMXConversationGroup;
}
BMXConversation *conversation = [[[BMXClient sharedClient] chatService] openConversation:conversationId type:type createIfNotExist:YES];
readAllMessage:
标记此消息及之前全部消息为已读,该消息同步到当前用户的所有设备
- (void)readAllMessage:(BMXMessageObject *)*message*
Discussion
标记此消息及之前全部消息为已读,该消息同步到当前用户的所有设备
Declared In
BMXChatManager.h
[self.navigationController pushViewController:chatVC animated:YES];
} else if ([NSStringFromClass([self.profileArray[indexPath.row] class]) isEqualToString:@"BMXGroup"]) {
BMXGroup *group = self.profileArray[indexPath.row];
chatVC = [[LHChatVC alloc] initWithGroupChat:(BMXGroup *)group messageType:BMXMessageTypeGroup];
BMXConversation *conversation = self.conversatonList[indexPath.row];
if (conversation.unreadNumber > 0) {
if (conversation.lastMessage) {
[[[BMXClient sharedClient] chatService] readAllMessage:conversation.lastMessage];
}
chatVC.delegate = self;
[chatVC setHidesBottomBarWhenPushed:YES];
[self.navigationController pushViewController:chatVC animated:YES];
} else if ([self.profileArray[indexPath.row] isKindOfClass:[NSDictionary class]]) {
BMXConversation *conversation = self.conversatonList[indexPath.row];
if (conversation.unreadNumber > 0) {
if (conversation.lastMessage) {
[[[BMXClient sharedClient] chatService] readAllMessage:conversation.lastMessage];
readCancel:
标记此消息为未读,该消息同步到当前用户的所有设备
- (void)readCancel:(BMXMessageObject *)*message*
Discussion
标记此消息为未读,该消息同步到当前用户的所有设备
Declared In
BMXChatManager.h
- (void)setUnread {
[[[BMXClient sharedClient] chatService] readCancel:self.currentMessage.messageObjc];
handler:^(UIAlertAction * action) {
if (message.messageObjc) {
//
[[[BMXClient sharedClient] chatService] readCancel:message.messageObjc];
recallMessage:completion:
撤回消息,消息状态变化会通过listener通知 *
- (void)recallMessage:(BMXMessageObject *)*message* completion:(void ( ^ ) ( BMXMessageObject *message , BMXError *error ))*aCompletionBlock*
Discussion
撤回消息,消息状态变化会通过listener通知 *
Declared In
BMXChatManager.h
- (void)recallMessage {
[[UIMenuController sharedMenuController] setMenuVisible:NO animated:YES];
[[[BMXClient sharedClient] chatService] recallMessage:self.currentMessage.messageObjc completion:nil];
removeChatListener:
移除聊天监听者
- (void)removeChatListener:(id<BMXChatServiceProtocol>)*listener*
Discussion
移除聊天监听者
Declared In
BMXChatManager.h
removeDelegate:
- (void)removeDelegate:(id<BMXChatServiceProtocol>)*aDelegate*
removeMessage:synchronizeDeviceForce:
删除此消息,该消息同步到当前用户的其它设备
- (void)removeMessage:(BMXMessageObject *)*message* synchronizeDeviceForce:(BOOL)*synchronizeDeviceForce*
Discussion
删除此消息,该消息同步到当前用户的其它设备
Declared In
BMXChatManager.h
- (void)deleteMessage {
[[UIMenuController sharedMenuController] setMenuVisible:NO animated:YES];
[[[BMXClient sharedClient] chatService] removeMessage:self.currentMessage.messageObjc synchronizeDeviceForce:YES];
resendMessage:completion:
重新发送消息,消息状态变化会通过listener通知 *
- (void)resendMessage:(BMXMessageObject *)*message* completion:(void ( ^ ) ( BMXMessageObject *message , BMXError *error ))*aCompletionBlock*
Discussion
重新发送消息,消息状态变化会通过listener通知 *
Declared In
BMXChatManager.h
- (void)retryButtonPressed:(UIButton *)sender {
[self routerEventWithName:kRouterEventChatResendEventName
userInfo:@{kShouldResendCell : self}];
self.self.messageModel.status = MessageDeliveryState_Delivering;
[self layoutSubviews];
[[[BMXClient sharedClient] chatService] resendMessage: self.messageModel.messageObjc completion:^(BMXMessageObject *message, BMXError *error) {
retrieveHistoryBMXconversation:msgId:size:completion:
拉取历史消息
- (void)retrieveHistoryBMXconversation:(BMXConversation *)*conversation* msgId:(long long)*msgId* size:(NSUInteger)*size* completion:(void ( ^ ) ( NSArray *messageListms , BMXError *error ))*aCompletionBlock*
Discussion
拉取历史消息
Declared In
BMXChatManager.h
});
}
}];
}else {
self.deImage = image;
}
}
self.conversation = conversation;
[[[BMXClient sharedClient] chatService] retrieveHistoryBMXconversation:self.conversation msgId:0 size:10 completion:^(NSArray *messageListms, BMXError *error) {
- (void)getHistoryMessage {
BMXMessageObject *firstMessage;
for (int i = 0; i < self.dataSource.count;i++) {
LHMessageModel *messageModel = self.dataSource[i];
if ([messageModel isKindOfClass:[LHMessageModel class]]) {
firstMessage = messageModel.messageObjc;
break;
}
}
long long firstMessageId = firstMessage? firstMessage.msgId : 0;
[[[BMXClient sharedClient] chatService] retrieveHistoryBMXconversation:self.conversation msgId:firstMessageId size:10 completion:^(NSArray *messageListms, BMXError *error) {
- (void)loadMessages {
[[[BMXClient sharedClient] chatService] retrieveHistoryBMXconversation:self.conversation msgId:0 size:10 completion:^(NSArray *messageListms, BMXError *error) {
searchMessagesByKeyWords:refTime:size:directionType:completion:
搜索消息
- (void)searchMessagesByKeyWords:(NSString *)*keywords* refTime:(NSTimeInterval)*refTime* size:(NSUInteger)*size* directionType:(BMXMessageDirection)*directionType* completion:(void ( ^ ) ( NSArray *array , BMXError *error ))*aCompletionBlock*
Discussion
搜索消息
Declared In
BMXChatManager.h
- (void)searchContentWith:(NSString *)keywords {
if (self.isConversation == YES) {
if (self.searchContentType == BMXContentTypeText) {
[self.conversation searchMessagesByKeyWords:keywords refTime:0 size:100 directionType:BMXMessageDirectionUp completion:^(NSArray<BMXMessageObject *> * _Nonnull messageList, BMXError * _Nonnull error) {
- (void)searchContentWith:(NSString *)keywords {
if (self.isConversation == YES) {
if (self.searchContentType == BMXContentTypeText) {
[self.conversation searchMessagesByKeyWords:keywords refTime:0 size:100 directionType:BMXMessageDirectionUp completion:^(NSArray<BMXMessageObject *> * _Nonnull messageList, BMXError * _Nonnull error) {
[self dataHandleMessages:messageList];
}];
}
} else {
[[[BMXClient sharedClient] chatService] searchMessagesByKeyWords:keywords refTime:0 size:100 directionType:BMXMessageDirectionUp completion:^(NSArray *array, BMXError *error) {
sendMessage:
发送消息,消息状态变化会通过listener通知 *
- (void)sendMessage:(BMXMessageObject *)*message*
Discussion
发送消息,消息状态变化会通过listener通知 *
Declared In
BMXChatManager.h
alertView.btnClickBlock = ^{
UIImage *image = contentImg;
NSData *imageData = UIImageJPEGRepresentation(image,1.0f);
NSData *thumImageData = UIImageJPEGRepresentation(image,1.0f);
BMXImageAttachment *imageAttachment = [[BMXImageAttachment alloc] initWithData:imageData thumbnailData:thumImageData imageSize:image.size conversationId:[NSString stringWithFormat:@"%lld",group.groupId]];
imageAttachment.pictureSize = CGSizeMake(image.size.width, image.size.height);
IMAcount *account = [IMAcountInfoStorage loadObject];
BMXMessageObject *messageObject = [[BMXMessageObject alloc] initWithBMXMessageAttachment:imageAttachment fromId:[account.usedId longLongValue] toId:group.groupId type:BMXMessageTypeGroup conversationId:group.groupId];
messageObject.contentType = BMXContentTypeImage;
if (messageObject) {
[[[BMXClient sharedClient] chatService] sendMessage:messageObject];
- (void)sendTypingMessage:(NSDictionary *)configdic {
BMXMessageObject *messageObject = [[BMXMessageObject alloc] initWithBMXMessageText:@""
fromId:[self.account.usedId longLongValue]
toId:self.currentRoster.rosterId
type:BMXMessageTypeSingle
conversationId:self.currentRoster.rosterId];
messageObject.extensionJson = [NSString jsonStringWithDictionary:configdic];
messageObject.qos = DeliveryQosModeAtMostOnce;
[[[BMXClient sharedClient] chatService] sendMessage:messageObject];
self.lastTime = [NSString stringWithFormat:@"%f",messageModel.messageObjc.serverTimestamp * 0.001];
[self insertNewMessageOrTime:time];
// self.lastTime = time;
}
NSIndexPath *index = [self insertNewMessageOrTime:messageModel];
[self.messages addObject:messageModel];
[self.tableView scrollToRowAtIndexPath:index atScrollPosition:UITableViewScrollPositionBottom animated:YES];
if (messageObject) {
messageObject.clientTimestamp = [messageModel.date longLongValue];
[[[BMXClient sharedClient] chatService] sendMessage:messageObject];
_chatBarView.sendContent = ^(LHContentModel *content) {
[weakSelf sendMessage:content];
alertView.btnClickBlock = ^{
UIImage *image = contentImg;
NSData *imageData = UIImageJPEGRepresentation(image,1.0f);
NSData *thumImageData = UIImageJPEGRepresentation(image,1.0f);
BMXImageAttachment *imageAttachment = [[BMXImageAttachment alloc] initWithData:imageData thumbnailData:thumImageData imageSize:image.size conversationId:[NSString stringWithFormat:@"%lld",roster.rosterId]];
imageAttachment.pictureSize = CGSizeMake(image.size.width, image.size.height);
IMAcount *account = [IMAcountInfoStorage loadObject];
BMXMessageObject *messageObject = [[BMXMessageObject alloc] initWithBMXMessageAttachment:imageAttachment fromId:[account.usedId longLongValue] toId:roster.rosterId type:BMXMessageTypeSingle conversationId:roster.rosterId];
messageObject.contentType = BMXContentTypeImage;
if (messageObject) {
[[[BMXClient sharedClient] chatService] sendMessage:messageObject];
- (void)sendMessage:(LHContentModel *)content {
if (content.words && content.words.length) {
// 文字类型
[self p_configsendMessage:content.words type:MessageBodyType_Text duartion:0];
}
if (!content.photos && !content.photos.photos.count) return;
// 图片类型
[content.photos.photos enumerateObjectsUsingBlock:^(UIImage *image, NSUInteger idx, BOOL * stop) {
[self p_configsendMessage:image type:MessageBodyType_Image duartion:0];
}];
}
transferingNum
上传或下载中的文件数
- (int)transferingNum
Discussion
上传或下载中的文件数
Declared In
BMXChatManager.h
Example: