跳到主要内容

信息托管概述

提示

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

信息托管介绍

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

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

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

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

信息托管开关

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

IMKit SDK 默认使用用户信息提供者代理方式实现会话页面和会话列表页面用户、群组信息的的显示。如果需要切换信息托管方式,需要手动配置:

Objective C
[RCIM sharedRCIM].currentDataSourceType = RCDataSourceTypeInfoManagement;

提示
  • 请在初始化 IMKit SDK 后,连接 IM 之前切换用户信息提供方式。
  • 切换信息托管方式后,会话列表和会话页面展示的用户或者群组信息从 IMLib 信息托管接口取,取到之后会缓存到内存中,之后会维护内存中的用户或者群组信息,内存中的信息在应用生命周期内有效。
  • 如果更新用户或者群组信息,必须使用 RCIM 中下面接口更新。
  • 内存中的用户信息主要用于 IMKit SDK 会话列表和会话页面内用户或者群组名称、备注、头像的展示,只保证这些基本信息的同步。其他信息建议直接使用 IMLib 层信息托管接口设置或者获取。

更新信息

切换信息托管方式后,更新信息请使用 RCIM 中相关用户信息托管的更新接口:

更新当前用户的信息

接口原型

Objective C
/// 修改自己的用户信息
///
/// - Parameter profile: 用户信息
/// - Parameter successBlock: 成功的回调
/// - Parameter errorBlock: 失败的回调
///
/// - Since: 5.16.0
- (void)updateMyUserProfile:(RCUserProfile *)profile
successBlock:(void (^)(void))successBlock
errorBlock:(nullable void (^)(RCErrorCode errorCode, NSArray<NSString *> * _Nullable errorKeys))errorBlock;

参数说明

RCUserProfile 属性介绍:

属性名类型描述
nameNSString昵称,长度不超过 32 个字符。
portraitUriNSString头像地址,长度不超过 128 个字符。
uniqueIdNSString用户应用号,支持大小写字母、数字,长度不超过 32 个字符。请注意 客户端 SDK 不支持设置此字段。
emailNSStringEmail,长度不超过 128 个字符。
birthdayNSString生日,长度不超过 32 个字符
genderRCUserGender性别
locationNSString所在地,长度不超过 32 个字符。
roleNSUInteger角色,支持 0~100 以内数字。
levelNSUInteger级别,支持 0~100 以内数字。
userExtProfileNSDictionary<NSString *, NSString *>自定义扩展信息,您最多可以设置 20 个用户信息(以 Key、Value 方式设置,扩展用户信息的 Key 需在开发者后台提前进行设置)
  1. Key:支持大小写字母、数字,长度不超过 32 个字符,且需要保障是 AppKey 下唯一。当设置的 Key 不存在时,设置不成功会返回错识提示。
  2. Value:字符串,不超过 256 个字符。

示例代码

Objective C
[[RCIM sharedRCIM] updateMyUserProfile:self.profle successBlock:^{
} errorBlock:^(RCErrorCode errorCode, NSArray<NSString *> * _Nullable errorKeys) {
}];

更新好友信息

接口原型

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

参数说明

参数名类型详细说明
userIdNSString要设置信息的好友用户 ID
remarkNSString好友备注名,最多 64 个字符,传 nil 或空字符串时清除现有备注
extProfileNSDictionary扩展信息字典,Key 需在开发者后台提前配置,格式为大小写字母、数字,长度不超过 32 字符且 AppKey 下唯一,Value 为字符串类型,长度不超过 256 字符
successBlockBlock设置成功时的回调 Block
errorBlockBlock设置失败时的回调 Block,errorCode 为错误码,errorKeys 为包含无效扩展字段 Key 的数组

示例代码

Objective C
[[RCIM sharedRCIM] setFriendInfo:@"userId" remark:@"name" extProfile:nil successBlock:^{

} errorBlock:^(RCErrorCode errorCode, NSArray<NSString *> * _Nullable errorKeys) {
}];

更新群信息

更新群组信息

接口原型

Objective C
/// 更新群组信息
/// - Parameter groupInfo: 群组信息,groupId 必填,否则更新失败
/// - Parameter successBlock: 成功回调
/// - Parameter errorBlock: 失败回调
///
/// - Since: 5.16.0

- (void)updateGroupInfo:(RCGroupInfo *)groupInfo
successBlock:(void (^)(void))successBlock
errorBlock:(void (^)(RCErrorCode errorCode, NSArray<NSString *> * _Nullable errorKeys))errorBlock NS_SWIFT_NAME(updateGroupInfo(_:successBlock:errorBlock:));

参数说明

参数名类型详细说明
groupInfoRCGroupInfo群组信息,其中 groupId 为必填字段,未设置会导致更新失败
successBlockBlock更新成功时的回调 Block
errorBlockBlock更新失败时的回调 Block,errorCode 为错误码,errorKeys 为包含错误信息的字符串数组

示例代码

Objective C
[[RCIM sharedRCIM] updateGroupInfo:info
successBlock:^{

} errorBlock:^(RCErrorCode errorCode, NSArray<NSString *> * _Nullable errorKeys) {

}];

设置群组备注名

接口原型

Objective C
/// 设置群组备注名
/// - 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;

参数说明

参数名类型详细说明
groupIdNSString要设置备注的群组 ID
remarkNSString群备注名称,长度不超过 64 个字符。传入 nil 或空字符串表示移除现有群备注
successBlockBlock设置成功时的回调 Block
errorBlockBlock设置失败时的回调 Block,errorCode 为错误码

示例代码

Objective C
[[RCIM sharedRCIM] setGroupRemark:@"groupId" remark:@"name" success:^{
} error:^(RCErrorCode errorCode) {

}];

更新群成员信息

接口原型

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

参数说明

参数名类型详细说明
groupIdNSString目标群组 ID
userIdNSString用户 ID(必填),支持传入当前登录用户 ID
nicknameNSString用户昵称(非必填),长度不超过 64 个字符,传 nil 或空字符串表示移除昵称
extraNSString附加信息(非必填),长度不超过 128 个字符
successBlockBlock设置成功时的回调 Block
errorBlockBlock设置失败时的回调 Block,errorCode 为错误码,errorKeys 为错误字段数组

示例代码

Objective C
[[RCIM sharedRCIM] setGroupMemberInfo:@"groupId" userId:@"userId" nickname:@"name" extra:nil
successBlock:^{
} errorBlock:^(RCErrorCode errorCode, NSArray<NSString *> * _Nullable errorKeys) {
}];