信息托管概述
提示
此功能在 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 属性介绍:
属性名 | 类型 | 描述 |
---|---|---|
name | NSString | 昵称,长度不超过 32 个字符。 |
portraitUri | NSString | 头像地址,长度不超过 128 个字符。 |
uniqueId | NSString | 用户应用号,支持大小写字母、数字,长度不超过 32 个字符。请注意 客户端 SDK 不支持设置此字段。 |
NSString | Email,长度不超过 128 个字符。 | |
birthday | NSString | 生日,长度不超过 32 个字符 |
gender | RCUserGender | 性别 |
location | NSString | 所在地,长度不超过 32 个字符。 |
role | NSUInteger | 角色,支持 0~100 以内数字。 |
level | NSUInteger | 级别,支持 0~100 以内数字。 |
userExtProfile | NSDictionary<NSString *, NSString *> | 自定义扩展信息,您最多可以设置 20 个用户信息(以 Key、Value 方式设置,扩展用户信息的 Key 需在开发者后台提前进行设置)
|
示例代码
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;
参数说明
参数名 | 类型 | 详细说明 |
---|---|---|
userId | NSString | 要设置信息的好友用户 ID |
remark | NSString | 好友备注名,最多 64 个字符,传 nil 或空字符串时清除现有备注 |
extProfile | NSDictionary | 扩展信息字典,Key 需在开发者后台提前配置,格式为大小写字母、数字,长度不超过 32 字符且 AppKey 下唯一,Value 为字符串类型,长度不超过 256 字符 |
successBlock | Block | 设置成功时的回调 Block |
errorBlock | Block | 设置失败时的回调 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:));
参数说明
参数名 | 类型 | 详细说明 |
---|---|---|
groupInfo | RCGroupInfo | 群组信息,其中 groupId 为必填字段,未设置会导致更新失败 |
successBlock | Block | 更新成功时的回调 Block |
errorBlock | Block | 更新失败时的回调 Block,errorCode 为错误码,errorKeys 为包含错误信息的字符串数组 |
示例代码
Objective C
[[RCIM sharedRCIM] updateGroupInfo:info
successBlock:^{
} errorBlock:^(RCErrorCode errorCode, NSArray<NSString *> * _Nullable errorKeys) {
}];