之前的项目因为用户信息以及好友关系是由服务器管理的,所以在开发的时候用户的头像以及用户的昵称是放在服务器中管理的。
我的环信版本是最新的 V3.2 版本,其他的版本暂且未知,不过我想模式应该八九不离十.
如果在 easuUI 中单纯的使用, 并弹出窗口显示的是用户的环信昵称, 和默认头像 (如果没有设置的话就是一个默认头像)
/// 弹出单聊界面窗口
EaseMessageViewController *chatController = [[EaseMessageViewController alloc] initWithConversationChatter:@"8001" conversationType:EMConversationTypeChat];
如果头像跟昵称放在服务器管理,那么显示的就不符合需求了
因为环信的包他们给弄成静态包了,所以无法看到 EaseMessageViewController.h 或 EaseMessageViewController.m 的代码。
其实要修改成自己定义的头像或者昵称很简单。我们只要创建一个控制器继承 EaseMessageViewController.h, 并在自定义的控制器中重写指定方法就可以实现头像和昵称的控制. 另外即使头像的路径是在服务器上的,也是可以的.
/// 重写 EaseMessageViewController.h 中的方法.
- (id<IMessageModel>)messageViewController:(EaseMessageViewController *)viewController modelForMessage:(EMMessage *)message
{if (message.direction == EMMessageDirectionSend){ /// 用户发送
// 用户可以根据自己的用户体系,根据 message 设置用户昵称和头像
id<IMessageModel> model = nil;
model = [[EaseMessageModel alloc] initWithMessage:message];
model.avatarImage = [UIImage imageNamed:@"EaseUIResource.bundle/user"];// 默认头像
NSString *url = [NSString ddl_webImageRequestWithUrl:self.userInformation.url];
model.avatarURLPath = url;// 头像网络地址
model.nickname = self.userInformation.username;// 用户昵称
return model;
} else {
// 用户可以根据自己的用户体系,根据 message 设置用户昵称和头像
id<IMessageModel> model = nil;
model = [[EaseMessageModel alloc] initWithMessage:message];
model.avatarImage = [UIImage imageNamed:@"EaseUIResource.bundle/user"];// 默认头像
NSString *url = [NSString ddl_webImageRequestWithUrl:self.friend_url];
model.avatarURLPath = url;// 头像网络地址
model.nickname = self.friend_username;// 用户昵称
return model;
}
}