跳到主要内容

信息托管概述

提示

此功能在 5.12.0 版本开始支持。

信息托管介绍

5.12.0 版本之前,IMKit 会话页面和会话列表只支持以 用户信息提供者代理方式 显示用户、群组信息。

5.12.0 版本及之后,IMKit 支持用户切换信息托管方式实现会话页面和会话列表用户、群组信息的的显示,并且新增了用户资料页、好友页、群组资料页等信息托管页面。

切换信息托管方式之后,不再通过信息提供者方式获取用户信息。会话页面和会话列表中用户信息优先展示消息体中携带用户信息,其次才是托管信息。

IMKit 中会话列表信息不进行实时更新,点击进入界面后获取最新信息。

信息托管开关

使用此功能前,您须在控制台开通信息托管服务。

IMKit SDK 默认使用用户信息托管方式实现会话页面和会话列表页面用户、群组信息的的显示。切换信息托管方式如下:

  RongUserInfoManager.getInstance().setDataSourceType(RongUserInfoManager.DataSourceType.INFO_MANAGEMENT);

切换信息托管方式后,会话列表和会话页面展示的用户或者群组信息从 lib 信息托管接口取,取到之后会缓存到内存中,之后会维护内存中的用户或者群组信息。

内存中的信息在应用生命周期内有效。

如果更新用户或者群组信息,必须使用 RongCoreClient 中下面接口更新:

更新信息

切换信息托管方式后,更新信息不要使用 RongUserInfoManager 中 refresh 相关方法或者 lib 同名接口,必须使用下面方法更新:

更新当前用户的信息

   /**
* 更新用户资料
*
* <p>注意:建议先获取用户资料,在最新的用户资料基础之上更新用户资料
*
* @param profile 用户资料信息
* @param callback 操作完成后,操作结果通过此回调返回。
* @since 5.10.0
*/
public abstract void updateMyUserProfile(
UserProfile profile, IRongCoreCallback.UpdateUserProfileCallback callback);

更新好友信息

    /**
* 设置好友信息
*
* @param userId 好友的用户ID
* @param remark 好友备注名。最多为 64 个字符,不支持纯空格,不传或为空时清除备注名。
* @param extProfile 扩展信息。默认最多可设置 10 个扩展信息。(需要通过开发者后台或 API 设置后才能使用,否则返回设置失败)
* @param callback 操作完成后,结果通过此回调返回。
*/
public abstract void setFriendInfo(
final String userId,
final String remark,
final Map<String, String> extProfile,
final IRongCoreCallback.OperationCallback callback);

更新群信息

    /**
* 更新群组资料
*
* <p>群信息更新模式 groupInfoEditPermission {@link
* io.rong.imlib.model.GroupOperationPermission},决定是否可以修改群组资料及权限信息
*
* <p><strong>注意:<br>
* 群信息(GroupInfo)支持设置的属性:<br>
* 1,群ID(id),最大长度 64 个字符。支持大小写英文字母与数字的组合<br>
* 2,群名称(name),最长不超过 64 个字符<br>
* 3,群头像(portraitUri),长度不超过 128 个字符<br>
* 4,群简介(introduction),最大长度不超过 512 个字符<br>
* 5,群公告(notice),最大长度不超过 1024 个字符<br>
* 6,群扩展信息(extProfile),默认最多可设置 10 个,需要通过开发者后台或 API 设置后才能使用,否则设置失败<br>
* 7,主动加入群权限模式(joinPermission)<br>
* 8,将群成员移出群组设置模式(removeMemberPermission)<br>
* 9,邀请他人入群模式(invitePermission)<br>
* 10,被邀请入群模式(inviteHandlePermission)<br>
* 11,群信息更新模式(groupInfoEditPermission)<br>
* 12,群成员信息更新模式(memberInfoEditPermission)<br>
* 其中:群ID(id)、群名称(name)必填,否则接口调用失败。<br>
* 具体参照{@link io.rong.imlib.model.GroupInfo}<br>
*
* @param groupInfo 群信息。
* @param callback 操作完成后,结果通过此回调返回。<br>
* callback的onError参数说明:<br>
* - 如果errorData不为空,代表GroupInfo具体出错的key<br>
*/
public abstract void updateGroupInfo(
final GroupInfo groupInfo,
final IRongCoreCallback.OperationCallbackEx<String> callback);

/**
* 设置群组备注名
*
* @param groupId 群Id。只支持普通群。
* @param remark 备注名。remark非空代表设置,否则代表移除,不支持纯空格。字符串长度不超过 64 个字符,如群备注名已存在则做替换处理,以最后一次设置为准。
* @param callback 操作完成后,结果通过此回调返回。
*/
public abstract void setGroupRemark(
final String groupId,
final String remark,
final IRongCoreCallback.OperationCallback callback);

更新群成员信息

    /**
* 设置群成员资料
*
* <p>群成员信息更新模式 memberInfoEditPermission {@link
* io.rong.imlib.model.GroupMemberInfoEditPermission},决定是否可以修改群成员资料
*
* @param groupId 群组Id。
* @param userId 群成员用户Id。
* @param nickname 群成员昵称。长度不超过 64 个字符,不支持纯空格。
* @param extra 群成员附加信息。长度不超过 128 个字符。注意:传null代表不设置此字段。
* @param callback 操作完成后,结果通过此回调返回。
*/
public abstract void setGroupMemberInfo(
final String groupId,
final String userId,
final String nickname,
final String extra,
final IRongCoreCallback.OperationCallback callback);
提示

内存中的信息主要用于 SDK 会话列表和会话页面内用户或者群组名称、备注、头像的展示,只保证这些基本信息的同步。其他信息建议直接使用 Lib 层信息托管接口设置或者获取。