用户信息不显示,不刷新问题排查 (4.x/5.x通用)

  • 1 . 用户信息不显示(头像和昵称都不显示)
    用户信息不显示, 一般分为两种情况。

    1. 本地用户信息不显示
    1. 好友信息不显示

    无论哪一种, 都可能是因为没有设置用户信息的缘故。

    请检查一下几方面: 1) 检查是否设置了 setUserInfoProvider。 2) 设置的用户信息是否正确。

    1. 用户信息内存缓存中查询未命中,该中情况需要通过调用 io.rong.imkit.userinfo.RongUserInfoManager#addUserDataObserver 方法添加用户信息改变的监听来获取用户信息。
  • 2. 图像设置后没有刷新, 还是显示原先的设置的图像

    1)缓存方式使用错误如果您使用的是 setUserInfoProvider 方式。则您需要注意是否使用了缓存。 即

         public static void setUserInfoProvider(UserInfoProvider userInfoProvider, boolean isCacheUserInfo)
    

    假如 isCacheUserInfo 设置为 true 时, 则您需要注意的是:

    只有缓存中没有消息的时候才会走 Provider 中的回调, 否则只会直接取缓存中的用户信息。

    所以,当您使用了用户缓存功能, 但又想更新用户信息的情况, 您需要调用 refreshUserInfoCache 方法来刷新缓存。

    当调用 refreshUserInfoCache 调用缓存时, 则会刷新缓存数据, 同时发送 EventBus 事件, 通知会话列表和会话界面刷新用户信息(昵称和头像)。

    2)头像虽然不同,但是路径相同 因为本地缓存是通过 url 作为 key 来取缓存的,假如 url 不改变, 则还是会从缓存中取的原先的图片。 此问题解决方法只能是让不同图片使用不同的路径。

  • 3**. 同时使用了 setUserInfoProvider 和 setUserInfo 两个设置用户信息的方法**

    由于 message 的 setUserInfo 设置用户信息的方法优先级高于 setUserInfoProvider 。 所以当用户通过setUserInfo 可能造成 setUserInfoProvider 设置无效。 建议两种不要混用。

    消息可看 用户信息(头像)如何刷新? - 融云即时通讯云|实时音视频