您的位置:首页 > 其它

关于融云一些笔记,免得新手绕弯路。

2017-07-20 13:53 274 查看
1.会话列表、聊天页面等头像不显示

没有设置用户信息提供者,应该在Application或其它界面添加:

RongIM.setUserInfoProvider(RongHelper.this, true);   //设置用户信息提供者
不光是设置当前客户端,也包括会话列表、会话聊天页面所有用户的信息。

@Override
public UserInfo getUserInfo(String rongUserId) {       //注意id是要遍历的
Log.d(TAG, "getUserInfo: id = " + rongUserId);
findUserByIdFromServer(getSystemUserIdFromRong(rongUserId) + "",null);
return null;    //异步请求请求信息返回null
}

public void  findUserByIdFromServer(user_id){    //从服务器获取用户信息
...
//注意user_id是传递给融云的user_id。
UserInfo myUserInfo = new UserInfo(user_id, server_user_name, Uri.parse(server_user_avatar));
RongIM.getInstance().refreshUserInfoCache(myUserInfo);
}
注意确保user_id不要搞错了,否则头像也不显示。
2.将头像改为圆形头像
修改一下融云的几个布局文件就ok了。去融云知识库里搜一下即可。
3.自定义会话列表
一开始我是复写了PrivateConversationProvider这个类,然后在Application注册。后来所有的逻 辑就出来了,就差一步:刷新会话列表,但是融云本身不提供刷新会话列表的方法。

后来在融云,我反复给技术提工单,终于人家回复我要复写ConversationListFragment,复写
onResolveAdapter方法,返回自己的ConversationListAdapter,正好这个类两个方法newView与
bindView方法与PrivateConversationProvider的方法一样,而且参数也一样。我只要把 PrivateConversationProvider的代码复制过来即可。
这里,主要看
(View viewpositionUIConversation data) {
这个方法,第3个参数UIConversation代表当前position的会话,可以通过会话获取双方的融云的user_id。

data.getConversationTargetId()        //代表对方的融云user_id
data.getConversationSenderId()        //代表最近一次发送消息的一方的user_id,可能是自己,可能是对方。
然后,根据user_id一般即可获取一些自定义的数据。

另外,还有一个优化的问题,只要会话页面走了了onStart方法,融云就会刷新一下会话页面。这时会重复的去请求网络,为了避免这个问题,可以在网络请求成功之后用Map缓存对应user_id的数据,在网络请求之前根据map和user_id判断是否有数据,没有数据,再进行网络请求。

4.app只有一个userid,但是app有两重身份怎么办?
一般融云初始化的时候,需要从系统的服务器获取token(一般需要传一个参数user_id),然后拿着token去连接融云。
这里的user_id,并不一定与你系统的user_id一模一样。你可以根据不同的身份,根据系统的user_id变换一个获取token的user_id即可。如下:

public String getRongUserId(){
int cat = userService.getUser().getCat();
return (cat == 1 ? userService.getUser().getUser_id() + "_a" : userService.getUser().getUser_id() + "_b");
}
需要注意的问题就是
1)在融云的界面,根据融云得到的user_id,如果需要拿着user_id请求自己的服务器,需要将融云的user_id变换为自己系统的真正的user_id。
2)切换身份的时候,注意要变换系统的user_id,重新获取token连接融云。

5.融云连接不稳定,有时候可以发送消息,有时候不能。
在splash页面,等融云连接成功了,再跳转主界面。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  融云 第3方