笔记
只实现一个单聊功能。然后头像在会话列表中显示。这个弄得我太痛苦了。挺简单的,但是我弄了好久好久。
在连接融云token值后要implement融云的这个接口RongIM.UserInfoProvider,然后会有一个方法出来,叫你重载。这段重载的理解错了很久很久,在这个卡了好几天。一开始以为是只要自己的头像就可以了,以为自己提供融云的uri,融云会自己显示出来,又被一篇文章误导说不能用局域网中的地址,以为一定是融云可以访问到的地址,然后融云动态加载这个头像,泪。。。。融云只会显示你的id名,显示头像和用户名是从你的数据库中或者是从你的服务端获取的。在每次需要头像的时候就会去调用这个getUserinfo,传递arg0到,通过遍历获取的你头像信息。然后在代码中显示出来。大致是这个意思。
@Override
public UserInfo getUserInfo(String arg0) {
for (liuyan it : list) {
//Toast.makeText(getApplicationContext(), "changdu"+userIdList.size(), Toast.LENGTH_SHORT).show();
if ((it.getId()).equals(arg0)) {
//Log.e(TAG, i.getPortraitUri());
uir=Uri.parse(httpurl.server+"/photoDoctor/"+it.getImage());
return new UserInfo(it.getId(),it.getUsername(), uir);
}
}
Log.e("MainActivity","UserId is :" +arg0 );
return null;
}
在连接完融云后,写上这个RongIM.setUserInfoProvider(this, false); 用户信息提供者 实现成功以后 在你的 会话界面 和 会话列表 头像和昵称 是会有正确展现的 。
有一点莫名奇妙的是,我是用json解析的,先从数据服务端获取相关信息,在全局变量中附上我所有用户的头像及用户和id,然后在调用getUserInfo方法时,发现所有的值只变成了一个一模一样,超级奇怪,但是在另一端做测试,他所有的值是可以显示出来的,然后跟同学讨论,可能原因是没有加吧融云的uri值传上去,调用的时候可能是这方面出现了问题。
贴上融云的地址http://support.rongcloud.cn/kb/MjQ4
更新,是应该是异步的原因,异步还没有加载完相关信息,就进行调用了,所以所有的数值都是一样的,我个人的解决方法是,在本地sqlite数据库先将异步的信息存储好,之后再进行头像的调用,速度快一点。悲伤,没有好好看文档啊!