美文网首页
环信3.0--发送文本消息及会话、聊天记录的获取

环信3.0--发送文本消息及会话、聊天记录的获取

作者: 陈水寒 | 来源:发表于2017-04-22 14:36 被阅读425次

发送文本消息

需要2个步骤,首先需要将要发送的文本信息进行构造,再将文本消息打包成消息,然后发送出去

  • 构造文本消息
    // 构造文本消息
    EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:text];
    NSString *from = [[EMClient sharedClient] currentUsername];
    
    // 生成Message
    EMMessage *message = [[EMMessage alloc] initWithConversationID:self.userName from:from to:self.userName body:body ext:nil];
    message.chatType = EMChatTypeChat;// 设置为单聊消息
  • 发送消息
    // 发送消息
    [[EMClient sharedClient].chatManager sendMessage:message progress:^(int progress) {
        NSLog(@"发送进度:%zd",progress);
    } completion:^(EMMessage *message, EMError *error) {
        if (!error) {
            NSLog(@"消息发送成功");
            // 添加到本地聊天记录中
            [self.chatMessages addObject:message];
            
            // 刷新tableview
            [self.tableView reloadData];
            
            // 滚动到最好一条消息
            [self scrollviewToLastMsg];
        }else{
            NSLog(@"消息发送失败%@",error.errorDescription);
        }
    }];

接收消息

通过代理方法获取消息的通知,然后解析收到的数据

  • 设置代理
    // 注册消息回调
    [[EMClient sharedClient].chatManager addDelegate:self delegateQueue:nil];
  • 消息回调后的处理
// 接收到消息时回调
- (void)messagesDidReceive:(NSArray *)aMessages
{
    // 遍历消息
    for (EMMessage *receiveMsg in aMessages) {
        // 消息如果是当前聊天者发过来的,则添加到本地聊天记录中,并刷新记录
        if ([receiveMsg.from isEqualToString:self.userName]) {
            // 添加到本地聊天记录中
            [self.chatMessages addObject:receiveMsg];
            
            // 刷新tableview
            [self.tableView reloadData];
            
            // 滚动到最好一条消息
            [self scrollviewToLastMsg];
        };
    }

}

聊天记录的获取

会话:操作聊天消息 EMMessage 的容器,每条聊天记录都隶属于某个会话,先取得当前聊天用户的会话,然后根据会话检索聊天记录

    // 获取会话
    EMConversation *conversation = [[EMClient sharedClient].chatManager getConversation:self.userName type:EMConversationTypeChat createIfNotExist:YES];
    
    // 加载会话历史记录
    [conversation loadMessagesStartFromId:nil count:100 searchDirection:EMMessageSearchDirectionUp completion:^(NSArray *aMessages, EMError *aError) {
        if (!aError) {

            [self.chatMessages addObjectsFromArray:aMessages];
            
            // 刷新表格
            [self.tableView reloadData];
            
            // 滚动到最后一条
            [self scrollviewToLastMsg];
        }
    }];

聊天演示:

聊天演示.gif

相关文章

网友评论

      本文标题:环信3.0--发送文本消息及会话、聊天记录的获取

      本文链接:https://www.haomeiwen.com/subject/vtsszttx.html