iOS 环信集成 遇到问题总结

1. 如何删除chatToolbar上 语音录制 或表情等按钮
image.png

iOS 环信集成 遇到问题总结_第1张图片
image.png

在setChatToolbar方法中 chatToolbar.inputViewLeftItems 和right数组进行操作即可删除

2. 如何删除底部chatBarMoreView的位置 语音电话等按钮

iOS 环信集成 遇到问题总结_第2张图片
image.png

注意: 这个索引是实时变得 比如你删除了第一个 那么第二个item的索引就变成了第一个

如何实现头像昵称

使用ext扩展消息来实现
首先在发送消息基于EaseMessageViewController的界面实现以下代理

                 /*!
                   @method
   @brief 将EMMessage类型转换为符合协议的类型
   @discussion 将EMMessage类型转换为符合协议的类型,设置用户信息,消息显示用户昵称和头像
   @param viewController 当前消息视图
   @param EMMessage 聊天消息对象类型
   @result 返回协议的类型
     */
        //具体样例:
                            - (id)messageViewController:(EaseMessageViewController *)viewController
                       modelForMessage:(EMMessage *)message
                                                                                                                                      {
//用户可以根据自己的用户体系,根据message设置用户昵称和头像
id model = nil;
model = [[EaseMessageModel alloc] initWithMessage:message];
model.avatarImage = [UIImage imageNamed:@"EaseUIResource.bundle/user"];//默认头像
  是自己发送  从本地获取图片  即登录的时候保存
if (model.isSender)
  {
    model.avatarURLPath = @"";//头像网络地址
    model.nickname = @"天涯";//用户昵称
  }
else
  {
          // 对方头像  从自己服务器获取  具体获取方式就是  本地服务器返回的好友列表 也就是通讯录是带好友头像和昵称的  对昵称 手机号头像URL等进行本地数据库保存
    model.avatarURLPath = @"";//头像网络地址
    model.nickname = @"海角";//用户昵称
  }


return model;
}

pragma mark - 设置昵称

EaseConversationModel *model = [[EaseConversationModel alloc] initWithConversation:conversation];
if (model.conversation.type == EMConversationTypeChat) {
    model.title = @"海天";
} else if (model.conversation.type == EMConversationTypeGroupChat) {
    NSString *imageName = @"groupPublicHeader";
    if (![conversation.ext objectForKey:@"subject"])
    {
        NSArray *groupArray = [[EMClient sharedClient].groupManager getJoinedGroups];
        for (EMGroup *group in groupArray) {
            if ([group.groupId isEqualToString:conversation.conversationId]) {
                NSMutableDictionary *ext = [NSMutableDictionary dictionaryWithDictionary:conversation.ext];
                [ext setObject:group.subject forKey:@"subject"];
                [ext setObject:[NSNumber numberWithBool:group.isPublic] forKey:@"isPublic"];
                conversation.ext = ext;
                break;
            }
        }
    }
    NSDictionary *ext = conversation.ext;
    model.title = [ext objectForKey:@"subject"];
    imageName = [[ext objectForKey:@"isPublic"] boolValue] ? @"groupPublicHeader" : @"groupPrivateHeader";
    model.avatarImage = [UIImage imageNamed:imageName];
}
return model;

}

在消息列表 对最后一条消息进行匹配 如果最后一条消息是自己发的 说明你已经发过 直接从数据库匹配即可 如果是对方发的 直接读取扩展消息的昵称和头像即可

你可能感兴趣的:(iOS 环信集成 遇到问题总结)