跳到主要内容

信息托管概述

提示

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

信息托管介绍

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

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

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

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

信息托管开关

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

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

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

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

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

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

更新信息

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

更新当前用户的信息

/// 修改自己的用户信息
///
/// - Parameter profile: 用户信息
/// - Parameter successBlock: 成功的回调
/// - Parameter errorBlock: 失败的回调
///
/// - Since: 5.12.2
- (void)updateMyUserProfile:(RCUserProfile *)profile
success:(void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode errorCode, NSString * _Nullable errorKey))errorBlock;

更新好友信息

/// 好友信息设置
/// - Parameter userId: 用户ID
/// - Parameter remark: 好友备注,最多为 64 个字符,不传或为空时清除备注名。
/// - Parameter extProfile: 扩展信息
/// - Parameter successBlock: 成功回调
/// - Parameter errorBlock: 失败回调
///
/// - Since: 5.12.2
- (void)setFriendInfo:(NSString *)userId
remark:(nullable NSString *)remark
extProfile:(nullable NSDictionary<NSString *, NSString*> *)extProfile
success:(void (^)(void))successBlock
error:(void (^)(RCErrorCode errorCode))errorBlock;

更新群信息

/// 更新群组信息
/// - Parameter groupInfo: 群组信息,groupId 必填,否则更新失败
/// - Parameter success: 成功回调
/// - Parameter error: 失败回调
///
/// - Since: 5.12.2
- (void)updateGroupInfo:(RCGroupInfo *)groupInfo
success:(void (^)(void))successBlock
error:(void (^)(RCErrorCode errorCode, NSString *errorKey))errorBlock NS_SWIFT_NAME(updateGroupInfo(_:success:error:));

/// 设置群组备注名
/// - Parameter groupId: 群组ID
/// - Parameter remark: 群备注,字符串长度不超过 64 个字符。传 nil 或 空字符串 表示移除群备注
/// - Parameter successBlock: 成功回调
/// - Parameter errorBlock: 失败回调
///
/// - Since: 5.12.2
- (void)setGroupRemark:(NSString *)groupId
remark:(nullable NSString *)remark
success:(void (^)(void))successBlock
error:(void (^)(RCErrorCode errorCode))errorBlock;

更新群成员信息

/// 设置群成员资料
/// - Parameter groupId: 群组ID
/// - Parameter userId: 用户ID, 必填项,支持传入当前登录用户 ID
/// - Parameter nickname: 用户昵称,非必填项,长度不超过 64 个字符,传 nil 或 空字符串表示移除用户昵称
/// - Parameter extra: 附加信息,非必填项,长度不超过 128 个字符
/// - Parameter successBlock: 成功回调
/// - Parameter errorBlock: 失败回调
///
/// - Since: 5.12.2
- (void)setGroupMemberInfo:(NSString *)groupId
userId:(NSString *)userId
nickname:(nullable NSString *)nickname
extra:(nullable NSString *)extra
success:(void (^)(void))successBlock
error:(void (^)(RCErrorCode errorCode))errorBlock;
提示

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