本文主要是介绍如何排查 IMKit 用户头像无法加载问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 首先确认下是否设置了用户信息提供者,是否向您的服务端请求用户请求用户信息并调用刷新用户信息方法
可参考下面链接
4.x
https://doc.rongcloud.cn/im/Android/4.X/ui/guide/user/set/android 1
5.x
融云开发者文档
刷新用户信息缓存方法
4.x
RongIM.getInstance().refreshUserInfoCache(userInfo);
5.x
RongUserInfoManager.getInstance().refreshUserInfoCache(userInfo);
确保上面都已调用后,调用 RongUserInfoManager.getInstance().getUserInfo(userId); 看下userinfo 数据是否正常
用户信息内存中默认缓存 500 个,如需更改可调用以下方法
io.rong.imkit.config.FeatureConfig#setUserCacheMaxCount
io.rong.imkit.config.FeatureConfig#setGroupCacheMaxCount
io.rong.imkit.config.FeatureConfig#setGroupMemberCacheMaxCount
如果调用 RongUserInfoManager.getInstance().getUserInfo(userId) 内存缓存中未命中时,该方法会返回 null,这种情况下数据会通过 io.rong.imkit.userinfo.RongUserInfoManager#addUserDataObserver 方法添加的监听返回。
2 . 确认您这边连接融云方法 使用RongIM.connect(),还是RongIMClient.connect(),含ui集成使用RongIM调用,用户信息会存到数据库中,使用RongIM连接,融云回调中有初始化并打开用户信息数据库操作**。**
3 . 您这边是否有实现消息中携带用户信息,用户信息与消息中携带用户信息二选一即可,使用消息中携带用户信息会出现用户修改用户信息后,之前的消息旁还是修改前的头像的情况。
/** * 设置当前用户信息。 * 如果开发者没有实现用户信息提供者,而是使用消息携带用户信息,需要使用这个方法设置当前用户的信息, * 然后在{@link #init(Application, String, boolean)}之后调用{@link RongUserInfoManager#getInstance()}.setMessageAttachedUserInfo(boolean)}, * 这样可以在每条消息中携带当前用户的信息,IMKit会在接收到消息的时候取出用户信息并刷新到界面上。 * * @param userInfo 当前用户信息。 */ public void setCurrentUserInfo(UserInfo userInfo) { RongUserInfoManager.getInstance().setCurrentUserInfo(userInfo); }
/** * 设置消息体内是否携带用户信息。 * * @param state 是否携带用户信息,true 携带,false 不携带。 */ public void setMessageAttachedUserInfo(boolean state) { RongUserInfoManager.getInstance().setMessageAttachedUserInfo(state); }
4 . 直接调用startConversation打开会话页面 title位置显示用户id
这个title位置没有回调到用户信息提供者位置,需要您这边使用fragment集成方式集成会话页面,自行创建toolbar,获取到targetid ,从您的服务器获取用户名并展示到toolbar位置
targetid获取方法
4.x
getIntent().getData().getQueryParameter(“targetid”)
5.x:
getActivity().getIntent().getStringExtra(“targetId”);
这篇关于如何排查 IMKit 用户头像无法加载问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!