Package io.rong.imkit.userinfo

## Class RongUserInfoManager

- All Implemented Interfaces:

      public class RongUserInfoManager

  Author:

    rongcloud

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `public interface` | `RongUserInfoManager.UserDataObserver` |
    `public enum` | `RongUserInfoManager.DataSourceType` | 数据源类型。

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `public RongUserInfoManager.DataSourceType` | `dataSourceType` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---

  - ### Enum Constant Summary

    Enum Constants
    Enum Constant | Description
    --- | ---

  - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `RongUserInfoManager.DataSourceType` | `getDataSourceType()` | 获取用户信息数据源类型。
    `void` | `setDataSourceType(RongUserInfoManager.DataSourceType dataSourceType)` | 切换用户信息数据源。
    `static RongUserInfoManager` | `getInstance()` |
    `void` | `initAndUpdateUserDataBase(Context context)` |
    `void` | `setUserInfoProvider(UserInfoProvider userInfoProvider, boolean isCacheUserInfo)` | 设置用户信息的提供者，供 UI 获取用户名称和头像信息。 各 ViewModel 会监听用户信息的变化，进行对应刷新。 如果需要异步从服务器获取用户信息，使用者可以在此方法中发起异步请求，然后返回 null 信息。 在异步请求结果返回后，根据返回的结果调用 refreshUserInfoCache} 刷新用户信息。
    `void` | `setGroupInfoProvider(GroupInfoProvider groupInfoProvider, boolean isCacheGroupInfo)` | 设置群组信息提供者。
    `boolean` | `isCacheUserOrGroupInfo()` |
    `void` | `setGroupUserInfoProvider(GroupUserInfoProvider groupUserInfoProvider, boolean isCacheGroupUserInfo)` | 设置群成员提供者 可以使用此方法，修改群组中用户昵称 设置后，当 sdk 界面展示用户信息时，会回调 getGroupUserInfo 使用者只需要根据对应的 groupId, userId 提供对应的用户信息 GroupUserInfo。 如果需要异步从服务器获取用户信息，使用者可以在此方法中发起异步请求，然后返回 null 信息。 在异步请求结果返回后，根据返回的结果调用 refreshGroupUserInfoCache 刷新信息。
    `UserInfo` | `getUserInfo(String userId)` | 获取用户信息。
    `Group` | `getGroupInfo(String groupId)` | 获取群组信息。
    `GroupUserInfo` | `getGroupUserInfo(String groupId, String userId)` | 获取群组用户信息。
    `UserInfo` | `getCurrentUserInfo()` | 获取当前用户信息。
    `void` | `setCurrentUserInfo(UserInfo userInfo)` | 设置当前用户信息。 如果开发者没有实现用户信息提供者，而是使用消息携带用户信息，需要使用这个方法设置当前用户的信息， 然后在init之后调用setMessageAttachedUserInfo， 这样可以在每条消息中携带当前用户的信息，IMKit会在接收到消息的时候取出用户信息并刷新到界面上。
    `void` | `setMessageAttachedUserInfo(boolean state)` | 设置消息体内是否携带用户信息。
    `boolean` | `getUserInfoAttachedState()` | 获取当前用户关于消息体内是否携带用户信息的配置
    `void` | `addUserDataObserver(RongUserInfoManager.UserDataObserver observer)` | 添加用户信息观察者。
    `void` | `removeUserDataObserver(RongUserInfoManager.UserDataObserver observer)` | 移除用户信息观察者。
    `void` | `refreshUserInfoCache(UserInfo userInfo)` | 刷新用户信息缓存。
    `void` | `refreshGroupInfoCache(Group groupInfo)` | 刷新群组信息缓存。
    `void` | `refreshGroupUserInfoCache(GroupUserInfo groupUserInfo)` | 刷新群组用户信息缓存。
    `String` | `getUserDisplayName(UserInfo userInfo)` | 获取用户显示名称。
    `String` | `getUserDisplayName(User user)` | 获取用户显示名称。
    `String` | `getUserDisplayName(UserInfo userInfo, String groupMemberName)` | 获取用户显示名称。

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

  - ### Method Detail

    - #### getDataSourceType

           RongUserInfoManager.DataSourceType getDataSourceType()

      获取用户信息数据源类型。

      Returns:

        用户信息数据源类型。

    - #### setDataSourceType

           void setDataSourceType(RongUserInfoManager.DataSourceType dataSourceType)

      切换用户信息数据源。

      Parameters:
        `dataSourceType` - 数据源类型。 默认为 INFO_PROVIDER。

    - #### getInstance

           static RongUserInfoManager getInstance()

    - #### initAndUpdateUserDataBase

           void initAndUpdateUserDataBase(Context context)

    - #### setUserInfoProvider

           void setUserInfoProvider(UserInfoProvider userInfoProvider, boolean isCacheUserInfo)

      设置用户信息的提供者，供 UI 获取用户名称和头像信息。 各 ViewModel 会监听用户信息的变化，进行对应刷新。 如果需要异步从服务器获取用户信息，使用者可以在此方法中发起异步请求，然后返回 null 信息。 在异步请求结果返回后，根据返回的结果调用 refreshUserInfoCache} 刷新用户信息。

      Parameters:
        `userInfoProvider` - 用户信息提供者 UserDataProvider.
        `isCacheUserInfo` - 设置是否由 IMKit 来缓存用户信息。如果 App 提供的 UserInfoProvider。 每次都需要通过网络请求用户数据，而不是将用户数据缓存到本地，会影响用户信息的加载速度；此时最好将本参数设置为 true，由 IMKit 来缓存用户信息。

    - #### setGroupInfoProvider

           void setGroupInfoProvider(GroupInfoProvider groupInfoProvider, boolean isCacheGroupInfo)

      设置群组信息提供者。

      Parameters:
        `groupInfoProvider` - 群组信息提供者。
        `isCacheGroupInfo` - 是否缓存群组信息。

    - #### isCacheUserOrGroupInfo

           boolean isCacheUserOrGroupInfo()

    - #### setGroupUserInfoProvider

           void setGroupUserInfoProvider(GroupUserInfoProvider groupUserInfoProvider, boolean isCacheGroupUserInfo)

      设置群成员提供者

      可以使用此方法，修改群组中用户昵称

      设置后，当 sdk 界面展示用户信息时，会回调 getGroupUserInfo 使用者只需要根据对应的 groupId, userId 提供对应的用户信息 GroupUserInfo。 如果需要异步从服务器获取用户信息，使用者可以在此方法中发起异步请求，然后返回 null 信息。 在异步请求结果返回后，根据返回的结果调用 refreshGroupUserInfoCache 刷新信息。

      Parameters:
        `groupUserInfoProvider` - 群组用户信息提供者。
        `isCacheGroupUserInfo` - 设置是否由 IMKit 来缓存 GroupUserInfo。如果 App 提供的 GroupUserInfoProvider。 每次都需要通过网络请求数据，而不是将数据缓存到本地，会影响信息的加载速度；此时最好将本参数设置为 true，由 IMKit 来缓存信息。

    - #### getUserInfo

           UserInfo getUserInfo(String userId)

      获取用户信息。

      Parameters:
        `userId` - 用户 Id。
      Returns:

        用户信息。

    - #### getGroupInfo

           Group getGroupInfo(String groupId)

      获取群组信息。

      Parameters:
        `groupId` - 群组 Id。
      Returns:

        群组信息。

    - #### getGroupUserInfo

           GroupUserInfo getGroupUserInfo(String groupId, String userId)

      获取群组用户信息。

      Parameters:
        `groupId` - 群组 Id。
        `userId` - 用户 Id。
      Returns:

        群组用户信息。

    - #### getCurrentUserInfo

           UserInfo getCurrentUserInfo()

      获取当前用户信息。

      Returns:

        当前用户信息。

    - #### setCurrentUserInfo

           void setCurrentUserInfo(UserInfo userInfo)

      设置当前用户信息。 如果开发者没有实现用户信息提供者，而是使用消息携带用户信息，需要使用这个方法设置当前用户的信息， 然后在init之后调用setMessageAttachedUserInfo， 这样可以在每条消息中携带当前用户的信息，IMKit会在接收到消息的时候取出用户信息并刷新到界面上。

      Parameters:
        `userInfo` - 当前用户信息。

    - #### setMessageAttachedUserInfo

           void setMessageAttachedUserInfo(boolean state)

      设置消息体内是否携带用户信息。

      Parameters:
        `state` - 是否携带用户信息，true 携带，false 不携带。

    - #### getUserInfoAttachedState

           boolean getUserInfoAttachedState()

      获取当前用户关于消息体内是否携带用户信息的配置

      Returns:

        是否携带用户信息

    - #### addUserDataObserver

           void addUserDataObserver(RongUserInfoManager.UserDataObserver observer)

      添加用户信息观察者。

      Parameters:
        `observer` - 用户信息观察者。

    - #### removeUserDataObserver

           void removeUserDataObserver(RongUserInfoManager.UserDataObserver observer)

      移除用户信息观察者。

      Parameters:
        `observer` - 用户信息观察者。

    - #### refreshUserInfoCache

           void refreshUserInfoCache(UserInfo userInfo)

      刷新用户信息缓存。

      Parameters:
        `userInfo` - 用户信息。

    - #### refreshGroupInfoCache

           void refreshGroupInfoCache(Group groupInfo)

      刷新群组信息缓存。

      Parameters:
        `groupInfo` - 群组信息。

    - #### refreshGroupUserInfoCache

           void refreshGroupUserInfoCache(GroupUserInfo groupUserInfo)

      刷新群组用户信息缓存。

      Parameters:
        `groupUserInfo` - 群组用户信息。

    - #### getUserDisplayName

           String getUserDisplayName(UserInfo userInfo)

      获取用户显示名称。

      Parameters:
        `userInfo` - 用户信息。
      Returns:

        用户显示名称。

    - #### getUserDisplayName

           String getUserDisplayName(User user)

      获取用户显示名称。

      Parameters:
        `user` - 用户信息。
      Returns:

        用户显示名称。

    - #### getUserDisplayName

           String getUserDisplayName(UserInfo userInfo, String groupMemberName)

      获取用户显示名称。

      Parameters:
        `userInfo` - 用户信息。
        `groupMemberName` - 群组成员名称。
      Returns:

        用户显示名称。