注册

Android EaseUI 关于设置昵称、头像

关于依赖easeui,设置头像、昵称问题
在调用EaseUI.getInstance().init初始化之后去设置用户信息提供者
//get easeui instance
EaseUI easeUI = EaseUI.getInstance();
//需要easeui库显示用户头像和昵称设置此provider
easeUI.setUserProfileProvider(new EaseUserProfileProvider() {
 
    @Override
    public EaseUser getUser(String username) {
       return getUserInfo(username);
    }
});

getUserInfo是自己实现的一个方法,在这个方法里去根据传入的username获取本地保存的对应的昵称、头像,设置给EaseUser的对象,并返回。

easeui里显示昵称、头像的时候会去调用EaseUserProfileProvider这个接口去获取EaseUser对象,会去执行在初始化之后设置的getUserInfo方法,如果没有显示昵称、头像,你就要去看getUserInfo里是否拿到昵称、头像设置给EaseUser对象了。

获取昵称、头像显示,我这里给大家两种方案,昵称、头像都保存在自己的服务器。

第一种
可以在登录之后去服务器获取所有好友的昵称、头像,包括自己的,保存在本地,getUserInfo方法里就去根据传入的username去本地获取,设置给EaseUser对象返回。

第二种
可以在getUserInfo方法里去判断本地是否有保存对应的昵称和头像,没有就发送网络请求去服务器获取对应的昵称头像保存到本地,设置给EaseUser对象返回 ,然后发送广播到聊天界面去提示刷新,刷新之后就会执行getUserInfo方法拿到本地的昵称、头像。

头像、昵称更新
用户请求你的服务器修改了昵称、头像,你的服务器去调用rest给这个用户的所有好友,发条透传消息,提示去更新本地保存的昵称、头像

15 个评论

收藏,思路很清晰。能在多点代码就好了
我这里有自己的用户体系,没有好友体系,不加好友就能直接聊天的,所以昵称和头像的本地保存根本不需要,我现在出现的问题是昵称显示对方的,头像是每次进聊天界面头像在发送消息之前都是对方的头像,发送消息之后就全变成自己的了。不知道咋办
官方文档写的还是不够详细,SDK里边有功能,但是不知道怎么调用。
Poi

Poi 回复 Poi

这个昵称问题,我现在还是没有解决。
setUserProfileProvider()以及 getUserInfo()都是在初始化的时候设置的吗? 我怎么作才能把好友头像传递?
我想问一下,发送网络请求不是要异步的吗??请求完之后都还没设置就已经返回easeuser了,还怎么设置呢??求解决
你那个用户体系是怎么实现头像和昵称的显示,不加好友就能直接聊天的,就能显示出来头像和昵称?大神
我按照那个实现了,自己写了getUserInfo(username);为啥没有执行
abc1190

abc1190 回复 Poi

我也没有解决?你是怎么做的?QQ1936618387
我这个也没成,大神是究竟怎么解决的?方便交流一下吗?QQ1936618387
yangpei

yangpei 回复 Poi

问题怎么解决的啊 ?
有没有大神方便加下QQ交流一下吗?
private void setEaseUser() { EaseUI easeUI = EaseUI.getInstance(); easeUI.setUserProfileProvider(new EaseUI.EaseUserProfileProvider() { @Override public EaseUser getUser(String username) { return getUserInfo(username); } }); } private EaseUser getUserInfo(String username) { EaseUser easeUser = new EaseUser(username); if (username.equals(LoginUserDao.loginUser.getUsername())){ easeUser.setNickname(LoginUserDao.loginUser.getRealname()); easeUser.setAvatar(LoginUserDao.loginUser.getHeadimg()); }else { Connections friend = new FriendDao(getApplicationContext()).getFriendByUsername(username); easeUser.setNickname(friend.getRealname()); easeUser.setAvatar(friend.getHeadimg()); } return easeUser; }//即可正常显示头像昵称
你好,环信官方说easeui的初始化在application里面,你这是在哪里初始化的?还有就是你把好友信息全部加入到本地的数据库了是吗?
这一段要写进文档说明里面啊,搞了半天原来才知道是要自己去实现的方法。

要回复文章请先登录注册