关于融云一些笔记,免得新手绕弯路。
2017-07-20 13:53
274 查看
1.会话列表、聊天页面等头像不显示
没有设置用户信息提供者,应该在Application或其它界面添加:
2.将头像改为圆形头像
修改一下融云的几个布局文件就ok了。去融云知识库里搜一下即可。
3.自定义会话列表
一开始我是复写了PrivateConversationProvider这个类,然后在Application注册。后来所有的逻 辑就出来了,就差一步:刷新会话列表,但是融云本身不提供刷新会话列表的方法。
后来在融云,我反复给技术提工单,终于人家回复我要复写ConversationListFragment,复写
onResolveAdapter方法,返回自己的ConversationListAdapter,正好这个类两个方法newView与
bindView方法与PrivateConversationProvider的方法一样,而且参数也一样。我只要把 PrivateConversationProvider的代码复制过来即可。
这里,主要看
另外,还有一个优化的问题,只要会话页面走了了onStart方法,融云就会刷新一下会话页面。这时会重复的去请求网络,为了避免这个问题,可以在网络请求成功之后用Map缓存对应user_id的数据,在网络请求之前根据map和user_id判断是否有数据,没有数据,再进行网络请求。
4.app只有一个userid,但是app有两重身份怎么办?
一般融云初始化的时候,需要从系统的服务器获取token(一般需要传一个参数user_id),然后拿着token去连接融云。
这里的user_id,并不一定与你系统的user_id一模一样。你可以根据不同的身份,根据系统的user_id变换一个获取token的user_id即可。如下:
1)在融云的界面,根据融云得到的user_id,如果需要拿着user_id请求自己的服务器,需要将融云的user_id变换为自己系统的真正的user_id。
2)切换身份的时候,注意要变换系统的user_id,重新获取token连接融云。
5.融云连接不稳定,有时候可以发送消息,有时候不能。
在splash页面,等融云连接成功了,再跳转主界面。
没有设置用户信息提供者,应该在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页面,等融云连接成功了,再跳转主界面。
相关文章推荐
- 菜鸟笔记-9月10日(关于jquery的一些应用)
- 一些关于网络知识的笔记,便于以后翻阅
- Groovy学习笔记之关于闭包的一些补充
- 关于RecyclerView的一些笔记
- 【学习笔记】关于变量类型的一些知识
- 关于站内搜索的一些笔记
- 关于一些新手MFC入门时,在vs上运行孙鑫老师代码时可能碰到的问题。
- 关于UICollectionView一些笔记
- IntelliJ IDEA 学习笔记 - 关于tab的一些设置
- 关于cloudstack中遇见的一些问题处理笔记
- 关于指针的一些笔记
- 黑马程序员-IOS学习笔记 OC 关于对象方法类方法的一些概念
- 机器学习&数据挖掘笔记_15(关于凸优化的一些简单概念)
- 安卓开发笔记——关于Handler的一些总结(上)
- 【代码笔记】关于UIFont的一些define
- 关于Activity生命周期的一些笔记
- PHP中关于正则的一些小笔记
- 《学习opencv》笔记——关于一些绘图的函数
- VR平台开发笔记(二)关于提示的一些做法
- 关于ARP欺骗与MITM(中间人攻击)的一些笔记