聊天室属性管理(KV)
IMLib SDK 在聊天室业务核心类 RCChatRoomClient 中提供了聊天室属性(KV)管理接口,用于在指定聊天室中设置自定义属性。
在语音直播聊天室场景中,可利用此功能记录聊天室中各麦位的属性;或在狼人杀等卡牌类游戏 场景中记录用户的角色和牌局状态等。
开通服务
使用聊天室属性(KV)接口要求开通聊天室属性自定义设置服务。您可以前往控制台的免费基础功能页面开启服务。
聊天室业务还提供服务端回调功能,支持由融云服务端将应用下的全部聊天室属性变化(设置,删除,全部删除等操作)同步到您指定的地址,方便 App 业务服务端了解聊天室属性变化。详见服务端文档聊天室属性同步(KV)。
功能局限
提示
- 聊天室销毁后,聊天室中的自定义属性同时销毁。
- 每个聊天室中,最多允许设置 100 个属性信息,以
Key-Value
的方式进行存储。 - IMLib SDK 未针对聊天室属性 KV 的操作频率进行限制。建议每个聊天室,每秒钟操作
Key-Value
频率保持在 100 次及以下(一秒内单次操作 100 个 KV 等同于操作 100 次)。
监听聊天室属性变化
IMLib SDK 在聊天室业务核心类 RCChatRoomClient 中提供了 RCChatRoomKVStatusChangeDelegate 协议,用于监听聊天室属性(KV)变化。
实现此功能需要开发者遵守 RCChatRoomKVStatusChangeDelegate
协议。
设置聊天室 KV 监听器
使用 addChatRoomKVStatusChangeDelegate
方法设置聊天室 KV 监听器代理,支持设置多个监听器:
示例代码
Objective C
[[RCChatRoomClient sharedChatRoomClient] addChatRoomKVStatusChangeDelegate:self];
移除聊天室 KV 监听器
使用 removeChatRoomKVStatusChangeDelegate
方法移除聊天室 KV 监听器代理。为了避免内存泄露,请在不需要监听时将监听器移除:
示例代码
Objective C
[[RCChatRoomClient sharedChatRoomClient] removeChatRoomKVStatusChangeDelegate:self];
实现聊天室属性 KV 变化的代理方法
示例代码
Objective C
@protocol RCChatRoomKVStatusChangeDelegate <NSObject>
/**
IMLib 刚加入聊天室时 KV 同步完成的回调
@param roomId 聊天室 Id
*/
- (void)chatRoomKVDidSync:(NSString *)roomId;
/**
IMLib 聊天室 KV 变化的回调
@param roomId 聊天室 Id
@param entry KV 字典,如果刚进入聊天室时存在 KV,会通过此回调将所有 KV 返回,再次回调时为其他人设置或者修改 KV
*/
- (void)chatRoomKVDidUpdate:(NSString *)roomId entry:(NSDictionary<NSString *, NSString *> *)entry;
/**
IMLib 聊天室 KV 被删除的回调
@param roomId 聊天室 Id
@param entry KV 字典
*/
- (void)chatRoomKVDidRemove:(NSString *)roomId entry:(NSDictionary<NSString *, NSString *> *)entry;
/**
聊天室 KV 变化的回调。
本回调包含 `chatRoomKVDidUpdate:entry:` 和 `chatRoomKVDidRemove:entry:` 的回调数据。
- Parameter roomId: 聊天室 ID。
- Parameter changeInfos: 发生变化的 KV,严格按照聊天室属性设置时的顺序。
*/
- (void)chatRoomKVDidChange:(NSString *)roomId
changeInfos:(NSArray<RCChatroomKVChangeInfo *> *)changeInfos;
@end