fix:修改图标和其他

This commit is contained in:
2026-03-07 02:02:22 +07:00
parent d874620a83
commit 67495ea864
653 changed files with 78983 additions and 816 deletions

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>LibraryIdentifier</key>
<string>ios-arm64_i386_x86_64-simulator</string>
<key>LibraryPath</key>
<string>RongChatRoom.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>i386</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>LibraryIdentifier</key>
<string>ios-arm64_armv7</string>
<key>LibraryPath</key>
<string>RongChatRoom.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>armv7</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>
<key>XCFrameworkFormatVersion</key>
<string>1.0</string>
</dict>
</plist>

View File

@@ -0,0 +1,85 @@
//
// RCChatRoomClient+Deprecated.h
// RongChatRoom
//
// Created by zgh on 2024/12/27.
// Copyright © 2024 RongCloud. All rights reserved.
//
#import <RongChatRoom/RongChatRoom.h>
NS_ASSUME_NONNULL_BEGIN
@interface RCChatRoomClient (Deprecated)
#pragma mark - 聊天室操作
/*!
加入聊天室(如果聊天室不存在则会创建)
- Parameter targetId: 聊天室 ID最大长度为 64 个字符
- Parameter messageCount: 进入聊天室时获取历史消息的数量,-1 <= messageCount <= 50
- Parameter successBlock: 加入聊天室成功的回调
- Parameter errorBlock: 加入聊天室失败的回调 [status: 加入聊天室失败的错误码]
可以通过传入的 messageCount 设置加入聊天室成功之后需要获取的历史消息数量。
-1 表示不获取任何历史消息0 表示不特殊设置而使用SDK默认的设置默认为获取 10 条0 < messageCount <= 50
为具体获取的消息数量,最大值为 50。注如果是 7.x 系统获取历史消息数量不要大于 30
从5.3.1版本开始, 加入聊天室后,断网重新加入聊天室默认获取聊天室消息条数,为主动加入时获取的历史消息条数。由于每次传入的条数固定, 可能会导致消息重复App 需要做消息排重。
- Warning: 没有加入过的聊天室(或杀死 app 重新打开),调用该接口会把该聊天室本地的消息与 KV 清除
- Remark: 聊天室
*/
- (void)joinChatRoom:(NSString *)targetId
messageCount:(int)messageCount
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode status))errorBlock
__deprecated_msg("Use [RCChatRoomClient joinExistChatRoom:messageCount:successBlock:errorBlock:] instead");
/*!
加入已经存在的聊天室(如果聊天室不存在返回错误 23410人数超限返回错误 23411
- Parameter targetId: 聊天室 ID最大长度为 64 个字符
- Parameter messageCount: 进入聊天室时获取历史消息的数量,-1 <= messageCount <= 50
- Parameter successBlock: 加入聊天室成功的回调
- Parameter errorBlock: 加入聊天室失败的回调 [status: 加入聊天室失败的错误码]
可以通过传入的 messageCount 设置加入聊天室成功之后,需要获取的历史消息数量。
-1 表示不获取任何历史消息0 表示不特殊设置而使用SDK默认的设置默认为获取 10 条0 < messageCount <= 50
为具体获取的消息数量,最大值为 50。
没有加入过的聊天室(或杀死 app 重新打开),调用该接口会把该聊天室本地的消息与 KV 清除
- Remark: 聊天室
*/
- (void)joinExistChatRoom:(NSString *)targetId
messageCount:(int)messageCount
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode status))errorBlock
__deprecated_msg("Use [RCChatRoomClient joinExistChatRoom:messageCount:successBlock:errorBlock:] instead");
#pragma mark-- 监听器
/*!
设置 IMLib 的聊天室状态监听器
- Parameter delegate: IMLib 聊天室状态监听器
- Remark: 聊天室
*/
- (void)setChatRoomStatusDelegate:(id<RCChatRoomStatusDelegate>)delegate
__deprecated_msg("Use [RCChatRoomClient addChatRoomStatusDelegate:] instead");
/*!
设置聊天室 KV 状态变化监听器
- Parameter delegate: 聊天室 KV 状态变化的监听器
可以设置并实现此 delegate 来进行聊天室状态变化的监听 。SDK 会在回调中通知您聊天室状态的改变。
- Remark: 功能设置
*/
- (void)setRCChatRoomKVStatusChangeDelegate:(id<RCChatRoomKVStatusChangeDelegate>)delegate
__deprecated_msg("Use [RCChatRoomClient addChatRoomKVStatusChangeDelegate:] instead");
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,428 @@
//
// RCChatRoomClient.h
// RongIMLib
//
// Created by 张改红 on 2020/7/28.
// Copyright © 2020 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <RongIMLibCore/RongIMLibCore.h>
#import "RCChatRoomProtocol.h"
#import "RCChatRoomInfo.h"
NS_ASSUME_NONNULL_BEGIN
@class RCJoinChatRoomResponse;
@interface RCChatRoomClient : NSObject
+ (instancetype)sharedChatRoomClient;
#pragma mark - 聊天室操作
/*!
加入聊天室(如果聊天室不存在则会创建)
- Parameter targetId: 聊天室 ID最大长度为 64 个字符
- Parameter messageCount: 进入聊天室时获取历史消息的数量,-1 <= messageCount <= 50
- Parameter extra: 附加信息,默认最大长度为 128 个字符,服务可配置
- Parameter successBlock: 加入聊天室成功的回调
- Parameter errorBlock: 加入聊天室失败的回调 [status: 加入聊天室失败的错误码]
- Remark: 聊天室
- Since: 5.10.2
*/
- (void)joinChatRoom:(NSString *)targetId
messageCount:(int)messageCount
extra:(nullable NSString *)extra
successBlock:(nullable void (^)(RCJoinChatRoomResponse *response))successBlock
errorBlock:(nullable void (^)(RCErrorCode status))errorBlock;
/*!
加入已经存在的聊天室(如果聊天室不存在返回错误 23410人数超限返回错误 23411
- Parameter targetId: 聊天室 ID最大长度为 64 个字符
- Parameter messageCount: 进入聊天室时获取历史消息的数量,-1 <= messageCount <= 50
- Parameter successBlock: 加入聊天室成功的回调
- Parameter errorBlock: 加入聊天室失败的回调 [status: 加入聊天室失败的错误码]
- Remark: 聊天室
- Since: 5.6.3
*/
- (void)joinExistChatRoom:(NSString *)targetId
messageCount:(int)messageCount
successBlock:(nullable void (^)(RCJoinChatRoomResponse *response))successBlock
errorBlock:(nullable void (^)(RCErrorCode status))errorBlock;
/*!
加入已经存在的聊天室(如果聊天室不存在返回错误 23410人数超限返回错误 23411
- Parameter targetId: 聊天室 ID最大长度为 64 个字符
- Parameter messageCount: 进入聊天室时获取历史消息的数量,-1 <= messageCount <= 50
- Parameter extra: 附加信息,最大长度为超过 128 个字符
- Parameter successBlock: 加入聊天室成功的回调
- Parameter errorBlock: 加入聊天室失败的回调 [status: 加入聊天室失败的错误码]
- Remark: 聊天室
- Since: 5.10.2
*/
- (void)joinExistChatRoom:(NSString *)targetId
messageCount:(int)messageCount
extra:(nullable NSString *)extra
successBlock:(nullable void (^)(RCJoinChatRoomResponse *response))successBlock
errorBlock:(nullable void (^)(RCErrorCode status))errorBlock;
/*!
退出聊天室
- Parameter targetId: 聊天室 ID最大长度为 64 个字符
- Parameter successBlock: 退出聊天室成功的回调
- Parameter errorBlock: 退出聊天室失败的回调 [status:退出聊天室失败的错误码]
- Remark: 聊天室
*/
- (void)quitChatRoom:(NSString *)targetId
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode status))errorBlock;
/*!
获取聊天室的信息(包含部分成员信息和当前聊天室中的成员总数)
- Parameter targetId: 聊天室 ID最大长度为 64 个字符
- Parameter count: 需要获取的成员信息的数量(目前获取到的聊天室信息中仅包含不多于 20 人的成员信息,即 0 <= count <=
20传入 0 获取到的聊天室信息将或仅包含成员总数,不包含具体的成员列表)
- Parameter order: 需要获取的成员列表的顺序(最早加入或是最晚加入的部分成员)
- Parameter successBlock: 获取成功的回调 [chatRoomInfo:聊天室信息]
- Parameter errorBlock: 获取失败的回调 [status:获取失败的错误码]
因为聊天室一般成员数量巨大,权衡效率和用户体验,目前返回的聊天室信息仅包含不多于 20 人的成员信息和当前成员总数。
如果您使用 RC_ChatRoom_Member_Asc 升序方式查询,将返回最早加入的成员信息列表;
如果您使用 RC_ChatRoom_Member_Desc 降序方式查询,将返回最晚加入的成员信息列表。
上述两种方式查询,返回的成员列表都是按加入时间从旧到新。
- Remark: 聊天室
*/
- (void)getChatRoomInfo:(NSString *)targetId
count:(int)count
order:(RCChatRoomMemberOrder)order
success:(nullable void (^)(RCChatRoomInfo *chatRoomInfo))successBlock
error:(nullable void (^)(RCErrorCode status))errorBlock;
/*!
添加 IMLib 的聊天室状态监听器
- Parameter delegate: IMLib 聊天室状态监听器
*/
- (void)addChatRoomStatusDelegate:(id<RCChatRoomStatusDelegate>)delegate NS_SWIFT_NAME(addChatRoomStatusDelegate(_:));
/*!
移除 IMLib 的聊天室状态监听器
- Parameter delegate: IMLib 聊天室状态监听器
*/
- (void)removeChatRoomStatusDelegate:(id<RCChatRoomStatusDelegate>)delegate
NS_SWIFT_NAME(removeChatRoomStatusDelegate(_:));
/*!
获取 IMLib 的聊天室状态监听器
- Returns: 所有 IMLib 聊天室状态监听器
*/
- (NSArray<id<RCChatRoomStatusDelegate>> *)allChatRoomStatusDelegates;
/*!
从服务器端获取聊天室的历史消息
- Parameter targetId: 聊天室ID最大长度为 64 个字符
- Parameter recordTime: 起始的消息发送时间戳,毫秒
- Parameter count: 需要获取的消息数量, 0 < count <= 200
- Parameter order: 拉取顺序RC_Timestamp_Desc:倒序RC_Timestamp_ASC:正序
- Parameter successBlock: 获取成功的回调 [messages:获取到的历史消息数组, syncTime:下次拉取消息的时间戳]
- Parameter errorBlock: 获取失败的回调 [status:获取失败的错误码]
此方法从服务器端获取聊天室的历史消息,但是必须先开通聊天室消息云存储功能。
指定开始时间,比如2016年9月1日10点(1472695200000),
默认是0(正序:从存储的第一条消息开始拉取,倒序:从存储的最后一条消息开始拉取)
*/
- (void)getRemoteChatroomHistoryMessages:(NSString *)targetId
recordTime:(long long)recordTime
count:(int)count
order:(RCTimestampOrder)order
success:(nullable void (^)(NSArray<RCMessage *> *messages,
long long syncTime))successBlock
error:(nullable void (^)(RCErrorCode status))errorBlock;
#pragma mark - 聊天室状态存储 (使用前必须先联系商务开通)
/*!
添加聊天室 KV 状态变化监听
- Parameter delegate: 代理
*/
- (void)addChatRoomKVStatusChangeDelegate:(id<RCChatRoomKVStatusChangeDelegate>)delegate
NS_SWIFT_NAME(addChatRoomKVStatusChangeDelegate(_:));
/*!
移除聊天室 KV 状态变化监听
- Parameter delegate: 代理
*/
- (void)removeChatRoomKVStatusChangeDelegate:(id<RCChatRoomKVStatusChangeDelegate>)delegate
NS_SWIFT_NAME(removeChatRoomKVStatusChangeDelegate(_:));
/*!
获取聊天室 KV 状态变化监听
- Returns: 所有聊天室 KV 状态变化的监听器
*/
- (NSArray<id<RCChatRoomKVStatusChangeDelegate>> *)allChatRoomKVStatusChangeDelegates;
/**
设置聊天室自定义属性
- Parameter chatroomId: 聊天室 ID最大长度为 64 个字符
- Parameter key: 聊天室属性名称Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,最大长度 128 个字符
- Parameter value: 聊天室属性对应的值,最大长度 4096 个字符
- Parameter sendNotification: 是否需要发送通知,如果发送通知,聊天室中的其他用户会接收到 RCChatroomKVNotificationMessage
通知消息,消息内容中包含操作类型(type)、属性名称(key)、属性名称对应的值(value)和自定义字段(extra)
- Parameter autoDelete: 用户掉线或退出时,是否自动删除该 Key、Value 值;自动删除时不会发送通知
- Parameter notificationExtra: 通知的自定义字段RC:chrmKVNotiMsg 通知消息中会包含此字段,最大长度 2 kb
- Parameter successBlock: 成功回调
- Parameter errorBlock: 失败回调
必须先开通聊天室状态存储功能
设置聊天室自定义属性,当 key 不存在时,代表增加属性; 当 key 已经存在时,代表更新属性的值,且只有 key
的创建者可以更新属性的值。
- Remark: 聊天室
*/
- (void)setChatRoomEntry:(NSString *)chatroomId
key:(NSString *)key
value:(NSString *)value
sendNotification:(BOOL)sendNotification
autoDelete:(BOOL)autoDelete
notificationExtra:(nullable NSString *)notificationExtra
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode))errorBlock;
/**
强制设置聊天室自定义属性
- Parameter chatroomId: 聊天室 ID最大长度为 64 个字符
- Parameter key: 聊天室属性名称Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,最大长度 128 个字符
- Parameter value: 聊天室属性对应的值,最大长度 4096 个字符
- Parameter sendNotification: 是否需要发送通知,如果发送通知,聊天室中的其他用户会接收到 RCChatroomKVNotificationMessage
通知消息,消息内容中包含操作类型(type)、属性名称(key)、属性名称对应的值(value)和自定义字段(extra)
- Parameter autoDelete: 用户掉线或退出时,是否自动删除该 Key、Value 值;自动删除时不会发送通知
- Parameter notificationExtra: 通知的自定义字段RCChatroomKVNotificationMessage 通知消息中会包含此字段,最大长度 2 kb
- Parameter successBlock: 成功回调
- Parameter errorBlock: 失败回调
必须先开通聊天室状态存储功能
强制设置聊天室自定义属性,当 key 不存在时,代表增加属性; 当 key 已经存在时,代表更新属性的值。
- Remark: 聊天室
*/
- (void)forceSetChatRoomEntry:(NSString *)chatroomId
key:(NSString *)key
value:(NSString *)value
sendNotification:(BOOL)sendNotification
autoDelete:(BOOL)autoDelete
notificationExtra:(nullable NSString *)notificationExtra
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode))errorBlock;
/**
批量设置聊天室自定义属性
- Parameter chatroomId: 聊天室 ID最大长度为 64 个字符
- Parameter entries: 聊天室属性key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,最大长度 128 个字符value 聊天室属性对应的值,最大长度 4096 个字符,最多一次设置 10 条
- Parameter isForce: 是否强制覆盖
- Parameter autoDelete: 用户掉线或退出时,是否自动删除该 Key、Value 值
- Parameter successBlock: 成功回调
- Parameter errorBlock: 失败回调,当 nErrorCode 为 RC_KV_STORE_NOT_ALL_SUCCESS23428的时候entries 才会有值key 为设置失败的 keyvalue 为该 key 对应的错误码)
必须先开通聊天室状态存储功能
- Remark: 聊天室
*/
- (void)setChatRoomEntries:(NSString *)chatroomId
entries:(NSDictionary<NSString *, NSString *> *)entries
isForce:(BOOL)isForce
autoDelete:(BOOL)autoDelete
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode,
NSDictionary<NSString *, NSNumber *> *failureEntries))errorBlock;
/**
获取聊天室单个属性
- Parameter chatroomId: 聊天室 ID最大长度为 64 个字符
- Parameter key: 聊天室属性名称
- Parameter successBlock: 成功回调
- Parameter errorBlock: 失败回调
必须先开通聊天室状态存储功能
- Remark: 聊天室
*/
- (void)getChatRoomEntry:(NSString *)chatroomId
key:(NSString *)key
success:(nullable void (^)(NSDictionary<NSString *, NSString *> *entry))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode))errorBlock;
/**
获取聊天室所有自定义属性
- Parameter chatroomId: 聊天室 ID最大长度为 64 个字符
- Parameter successBlock: 成功回调
- Parameter errorBlock: 失败回调
必须先开通聊天室状态存储功能
- Remark: 聊天室
*/
- (void)getAllChatRoomEntries:(NSString *)chatroomId
success:(nullable void (^)(NSDictionary<NSString *, NSString *> *entry))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode))errorBlock;
/**
删除聊天室自定义属性
- Parameter chatroomId: 聊天室 ID最大长度为 64 个字符
- Parameter key: 聊天室属性名称
- Parameter sendNotification: 是否需要发送通知,如果发送通知,聊天室中的其他用户会接收到 RCChatroomKVNotificationMessage
通知消息,消息内容中包含操作类型(type)、属性名称(key)、属性名称对应的值(value)和自定义字段(extra)
- Parameter notificationExtra: 通知的自定义字段RCChatroomKVNotificationMessage 通知消息中会包含此字段,最大长度 2 kb
- Parameter successBlock: 成功回调
- Parameter errorBlock: 失败回调
必须先开通聊天室状态存储功能
删除聊天室自定义属性,只有自己设置的属性可以被删除。
- Remark: 聊天室
*/
- (void)removeChatRoomEntry:(NSString *)chatroomId
key:(NSString *)key
sendNotification:(BOOL)sendNotification
notificationExtra:(nullable NSString *)notificationExtra
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode))errorBlock;
/**
强制删除聊天室自定义属性
- Parameter chatroomId: 聊天室 ID最大长度为 64 个字符
- Parameter key: 聊天室属性名称
- Parameter sendNotification: 是否需要发送通知,如果发送通知,聊天室中的其他用户会接收到 RCChatroomKVNotificationMessage
通知消息,消息内容中包含操作类型(type)、属性名称(key)、属性名称对应的值(value)和自定义字段(extra)
- Parameter notificationExtra: 通知的自定义字段RCChatroomKVNotificationMessage 通知消息中会包含此字段,最大长度 2 kb
- Parameter successBlock: 成功回调
- Parameter errorBlock: 失败回调
必须先开通聊天室状态存储功能
强制删除聊天室自定义属性。
- Remark: 聊天室
*/
- (void)forceRemoveChatRoomEntry:(NSString *)chatroomId
key:(NSString *)key
sendNotification:(BOOL)sendNotification
notificationExtra:(nullable NSString *)notificationExtra
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode))errorBlock;
/**
批量删除聊天室自定义属性
- Parameter chatroomId: 聊天室 ID最大长度为 64 个字符
- Parameter keys: 聊天室属性名称,最多一次删除 10 条
- Parameter isForce: 是否强制覆盖
- Parameter successBlock: 成功回调
- Parameter errorBlock: 失败回调,当 nErrorCode 为 RC_KV_STORE_NOT_ALL_SUCCESS23428的时候entries 才会有值key 为设置失败的 keyvalue 为该 key 对应的错误码)
必须先开通聊天室状态存储功能
- Remark: 聊天室
*/
- (void)removeChatRoomEntries:(NSString *)chatroomId
keys:(NSArray<NSString *> *)keys
isForce:(BOOL)isForce
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode,
NSDictionary<NSString *, NSNumber *> *failureEntries))errorBlock;
#pragma mark - 聊天室成员变化监听器
/*!
设置聊天室成员变化的监听器
可以设置并实现此拦截器来监听聊天室成员的加入或退出
- Remark: 功能设置
*/
@property (nonatomic, weak, nullable) id<RCChatRoomMemberDelegate> memberDelegate;
/// 绑定聊天室 ID 和 RTCRoomID
/// - Parameter chatRoomId: 聊天室 ID最大长度为 64 个字符
/// - Parameter rtcRoomId: rtc room ID
/// - Parameter successBlock: 成功回调
/// - Parameter errorBlock: 失败回调
- (void)bindChatRoom:(NSString *)chatRoomId
withRTCRoom:(NSString *)rtcRoomId
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode))errorBlock;
#pragma mark - 聊天室事件通知监听器
/**
添加 IMLib 的聊天室事件通知监听器
聊天室事件通知
封禁、解封、禁言、解除禁言、多端同步相关事件等
- Parameter delegate: IMLib 聊天室事件通知监听器
- Since: 5.4.5
*/
- (void)addChatRoomNotifyEventDelegate:(id<RCChatRoomNotifyEventDelegate>)delegate
NS_SWIFT_NAME(addChatRoomNotifyEventDelegate(_:));
/**
移除 IMLib 的聊天室事件通知监听器
- Parameter delegate: IMLib 聊天室事件通知监听器
- Since: 5.4.5
*/
- (void)removeChatRoomNotifyEventDelegate:(id<RCChatRoomNotifyEventDelegate>)delegate
NS_SWIFT_NAME(removeChatRoomNotifyEventDelegate(_:));
/**
返回 IMLib 的聊天室事件通知监听器
- Since: 5.4.5
*/
- (NSArray<id<RCChatRoomNotifyEventDelegate>> *)allChatRoomNotifyEventDelegates;
/// 是否允许聊天室消息排重,默认值为 YES
///
/// 排重的场景如下
/// 发送方弱网情况下发送消息,消息到达服务但发送方没有收到服务 ack导致发送方认为消息发送失败
/// 此种情况下,服务端和接收方都会收到第一条消息
/// 此时发送方重发该消息再次达到服务那么此时服务端会有两条消息消息内容相同messageUid 不同)
/// 接收方会收到两条内容相同但 messageUid 不同的消息SDK 此时会把第二条相同内容消息排重掉
/// 以此来保证重发的相同内容消息,发送方只有一条消息,接收方也只有一条消息
///
/// 当消息量少时,消息排重影响不大;但是本地存在大量消息时,排重会出现性能问题
/// 当 APP 本地存在大量消息,且发生收消息卡顿时,建议将排重关闭
/// 在初始化接口之后连接之前调用
///
/// - Parameter enableCheck: 是否允许聊天室消息排重
///
/// - Since: 5.8.2
- (void)setCheckChatRoomDuplicateMessage:(BOOL)enableCheck;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,162 @@
//
// RCChatRoomEnumDefine.h
// RongChatRoom
//
// Created by 张改红 on 2020/8/12.
// Copyright © 2020 张改红。All rights reserved.
//
#import <Foundation/Foundation.h>
#ifndef RCChatRoomEnumDefine_h
#define RCChatRoomEnumDefine_h
#pragma mark RCChatRoomStatus - 聊天室状态码
/*!
聊天室状态码
*/
typedef NS_ENUM(NSInteger, RCChatRoomStatus) {
/*!
正在加入聊天室中
*/
RCChatRoomStatus_Joining = 1,
/*!
加入聊天室成功
*/
RCChatRoomStatus_Joined = 2,
/*!
加入聊天室失败
*/
RCChatRoomStatus_JoinFailed = 3,
/*!
退出了聊天室
*/
RCChatRoomStatus_Quited = 4,
/*!
聊天室被销毁
*/
RCChatRoomStatus_Destroyed = 5,
/*!
聊天室被重置
由于聊天室长时间不活跃,已经被系统回收。聊天室 KV 已经被清空,请开发者刷新界面。
*/
RCChatRoomStatus_Reset = 6,
};
#pragma mark RCChatRoomMemberOrder - 聊天室成员排列顺序
/*!
聊天室成员的排列顺序
*/
typedef NS_ENUM(NSUInteger, RCChatRoomMemberOrder) {
/*!
升序,返回最早加入的成员列表
*/
RC_ChatRoom_Member_Asc = 1,
/*!
降序,返回最晚加入的成员列表
*/
RC_ChatRoom_Member_Desc = 2,
};
#pragma mark RCChatRoomMemberActionType - 聊天室成员加入或退出
/*!
聊天室成员加入或者退出
*/
typedef NS_ENUM(NSInteger, RCChatRoomMemberActionType) {
/*!
聊天室成员退出
*/
RC_ChatRoom_Member_Quit = 0,
/*!
聊天室成员加入
*/
RC_ChatRoom_Member_Join = 1,
};
#pragma mark RCChatRoomEvent - 聊天室事件
/*!
聊天室多端登录同步时,消息中的状态
*/
typedef NS_ENUM(NSInteger, RCChatRoomSyncStatus) {
/*!
多端登录同步用户离开聊天室,
1. 同一用户在一终端离开聊天室,通知另一终端
2. 用户多端加入聊天室场景:用户在 Android 端加入聊天室,在 Web 端登录后又加入一个新的聊天室,自动将用户从上一个聊天室踢出
被踢出聊天室中的所有成员,包括被踢出用户
*/
RCChatRoomSyncStatusQuit = 0,
/*!
多端登录同步用户加入聊天室,
同一用户在一终端加入聊天室,通知另一终端
*/
RCChatRoomSyncStatusJoin = 1
};
/*!
聊天室解封/封禁用户消息,操作类型枚举
*/
typedef NS_ENUM(NSInteger, RCChatRoomMemberOperateType) {
/*!
解封
*/
RCChatRoomMemberOperateTypeDeblock = 0,
/*!
封禁
*/
RCChatRoomMemberOperateTypeBlocked = 1
};
/*!
聊天室禁言相关消息,操作类型枚举
*/
typedef NS_ENUM(NSInteger, RCChatRoomMemberBanType) {
/*!
解除指定聊天室中用户禁言
*/
RCChatRoomMemberBanTypeUnmuteUsers = 0,
/*!
禁言指定聊天室中用户
*/
RCChatRoomMemberBanTypeMuteUsers = 1,
/*!
解除聊天室全体禁言
*/
RCChatRoomMemberBanTypeUnmuteAll = 2,
/*!
聊天室全体禁言
*/
RCChatRoomMemberBanTypeMuteAll = 3,
/*!
移出禁言用户白名单
*/
RCChatRoomMemberBanTypeRemoveWhitelist = 4,
/*!
添加禁言用户白名单
*/
RCChatRoomMemberBanTypeAddWhitelist = 5,
/*!
解除用户聊天室全局禁言
*/
RCChatRoomMemberBanTypeUnmuteGlobal = 6,
/*!
用户聊天室全局禁言
*/
RCChatRoomMemberBanTypeMuteGlobal = 7
};
#endif /* RCChatRoomEnumDefine_h */

View File

@@ -0,0 +1,40 @@
//
// RCChatRoomInfo.h
// RongIMLib
//
// Created by 岑裕 on 16/1/11.
// Copyright © 2016 年 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "RCChatRoomMemberInfo.h"
#import "RCChatRoomEnumDefine.h"
/*!
聊天室信息类
*/
@interface RCChatRoomInfo : NSObject
/*!
聊天室 ID
*/
@property (nonatomic, copy) NSString *targetId;
/*!
包含的成员信息类型
*/
@property (nonatomic, assign) RCChatRoomMemberOrder memberOrder;
/*!
聊天室中的部分成员信息 RCChatRoomMemberInfo 列表
如果成员类型为RC_ChatRoom_Member_Asc则为最早加入的成员列表按成员加入时间升序排列
如果成员类型为RC_ChatRoom_Member_Desc则为最晚加入的成员列表按成员加入时间降序排列。
*/
@property (nonatomic, strong) NSArray<RCChatRoomMemberInfo *> *memberInfoArray;
/*!
当前聊天室的成员总数
*/
@property (nonatomic, assign) int totalMemberCount;
@end

View File

@@ -0,0 +1,36 @@
//
// RCChatRoomMemberAction.h
// RongChatRoom
//
// Created by 孙浩 on 2021/7/12.
// Copyright © 2021 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "RCChatRoomEnumDefine.h"
NS_ASSUME_NONNULL_BEGIN
@interface RCChatRoomMemberAction : NSObject
/// 成员 ID
@property (nonatomic, copy) NSString *memberId;
/// 成员加入或者退出
@property (nonatomic, assign) RCChatRoomMemberActionType action;
/// 附加信息
/// - Since 5.10.2
@property (nonatomic, copy, nullable) NSString *extra;
/*!
RCChatRoomMemberAction 初始化方法
- Parameter memberId: 成员 ID
- Parameter action: 成员加入或退出
*/
- (instancetype)initWithMemberId:(NSString *)memberId action:(RCChatRoomMemberActionType)action;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,37 @@
//
// RCChatRoomMemberActionModel.h
// RongChatRoom
//
// Created by chinaspx on 2023/10/18.
// Copyright © 2023 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@class RCChatRoomMemberAction;
@interface RCChatRoomMemberActionModel : NSObject
/// 聊天室 ID
@property (nonatomic, readonly) NSString *roomId;
/// 聊天室成员变更信息
@property (nonatomic, strong, readonly) NSArray<RCChatRoomMemberAction *> *chatRoomMemberActions;
/// 当前的聊天室人数
@property (nonatomic, assign, readonly) NSUInteger memberCount;
/// 初始化方法
/// - Parameter roomId: 聊天室 ID
/// - Parameter memberActions: 聊天室成员变更信息
/// - Parameter memberCount: 当前的聊天室人数
///
- (instancetype)initWithRoomId:(NSString *)roomId
memberActions:(NSArray<RCChatRoomMemberAction *> *)memberActions
memberCount:(NSUInteger)memberCount;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,46 @@
//
// RCChatRoomMemberBanEvent.h
// RongChatRoom
//
// Created by chinaspx on 2023/5/6.
// Copyright © 2023 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "RCChatRoomEnumDefine.h"
NS_ASSUME_NONNULL_BEGIN
@interface RCChatRoomMemberBanEvent : NSObject
/// 聊天室 ID
@property (nonatomic, copy) NSString *chatroomId;
/**
禁言操作类型,详见枚举值
禁言/解除禁言操作类型:
0解除指定聊天室中用户禁言
1禁言指定聊天室中用户
2解除聊天室全体禁言
3聊天室全体禁言
4: 移出禁言用户白名单
5: 添加禁言用户白名单
6: 解除用户聊天室全局禁言
7用户聊天室全局禁言
*/
@property (nonatomic, assign) RCChatRoomMemberBanType banType;
/// 禁言的总时间(禁言的操作有此字段)(毫秒) ,最大值为 43200 分钟1 个月), 最小值 1 分钟
@property (nonatomic, assign) NSInteger durationTime;
/// 操作时间 (毫秒时间戳)
@property (nonatomic, assign) long long operateTime;
/// 禁言/解禁言用户 ID 列表
@property (nonatomic, copy) NSArray<NSString *> *userIdList;
/// 附加信息
@property (nonatomic, copy, nullable) NSString *extra;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,47 @@
//
// RCChatRoomMemberBlockEvent.h
// RongChatRoom
//
// Created by chinaspx on 2023/5/6.
// Copyright © 2023 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "RCChatRoomEnumDefine.h"
NS_ASSUME_NONNULL_BEGIN
@interface RCChatRoomMemberBlockEvent : NSObject
/*!
聊天室 ID
*/
@property (nonatomic, copy) NSString *chatroomId;
/**
封禁类型0是解封1是封禁
*/
@property (nonatomic, assign) RCChatRoomMemberOperateType operateType;
/**
封禁的总时间,封禁时有此字段(毫秒)最大值为43200分钟1个月, 最小值1分钟
*/
@property (nonatomic, assign) NSInteger durationTime;
/**
操作时间(毫秒时间戳)
*/
@property (nonatomic, assign) long long operateTime;
/**
被封禁/解封的用户 ID 列表
*/
@property (nonatomic, copy) NSArray<NSString *> *userIdList;
/**
附加信息
*/
@property (nonatomic, copy, nullable) NSString *extra;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,26 @@
//
// RCChatRoomMemberInfo.h
// RongIMLib
//
// Created by 岑裕 on 16/1/10.
// Copyright © 2016 年 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
/*!
聊天室成员信息类
*/
@interface RCChatRoomMemberInfo : NSObject
/*!
用户 ID
*/
@property (nonatomic, copy) NSString *userId;
/*!
用户加入聊天室时间Unix 时间戳,毫秒)
*/
@property (nonatomic, assign) long long joinTime;
@end

View File

@@ -0,0 +1,255 @@
//
// RCChatRoomProtocol.h
// RongChatRoom
//
// Created by 张改红 on 2020/8/12.
// Copyright © 2020 张改红。All rights reserved.
//
#ifndef RCChatRoomProtocol_h
#define RCChatRoomProtocol_h
NS_ASSUME_NONNULL_BEGIN
@class RCChatRoomMemberAction, RCChatRoomMemberActionModel, RCJoinChatRoomResponse;
@class RCChatRoomSyncEvent, RCChatRoomMemberBlockEvent, RCChatRoomMemberBanEvent;
typedef NS_ENUM(NSUInteger, RCChatRoomDestroyType) {
/// 开发者主动销毁
RCChatRoomDestroyTypeManual = 0,
/// 聊天室长时间不活跃,被系统自动回收
RCChatRoomDestroyTypeAuto = 3
};
#pragma mark - 聊天室监听器
/*!
IMLib聊天室状态的的监听器
设置IMLib的聊天室状态监听器请参考RCIMClient的setChatRoomStatusDelegate:方法。
*/
@protocol RCChatRoomStatusDelegate <NSObject>
/*!
开始加入聊天室的回调
- Parameter chatroomId: 聊天室ID
*/
- (void)onChatRoomJoining:(NSString *)chatroomId;
/*!
加入聊天室成功的回调
- Parameter chatroomId: 聊天室ID
*/
- (void)onChatRoomJoined:(NSString *)chatroomId response:(RCJoinChatRoomResponse *)response;
- (void)onChatRoomJoined:(NSString *)chatroomId
__deprecated_msg("Use [RCChatRoomStatusDelegate onChatRoomJoined:response:] instead");
/*!
加入聊天室失败的回调
- Parameter chatroomId: 聊天室ID
- Parameter errorCode: 加入失败的错误码
如果错误码是KICKED_FROM_CHATROOM或RC_CHATROOM_NOT_EXIST则不会自动重新加入聊天室App需要按照自己的逻辑处理。
*/
- (void)onChatRoomJoinFailed:(NSString *)chatroomId errorCode:(RCErrorCode)errorCode;
/*!
加入聊天室成功,但是聊天室被重置。接收到此回调后,还会收到 onChatRoomJoined回调。
- Parameter chatroomId: 聊天室ID
*/
- (void)onChatRoomReset:(NSString *)chatroomId;
/*!
退出聊天室成功的回调
- Parameter chatroomId: 聊天室ID
*/
- (void)onChatRoomQuited:(NSString *)chatroomId;
/*!
聊天室被销毁的回调,用户在线的时候房间被销毁才会收到此回调。
- Parameter chatroomId: 聊天室ID
- Parameter type: 聊天室销毁原因
*/
- (void)onChatRoomDestroyed:(NSString *)chatroomId type:(RCChatRoomDestroyType)type;
@end
#pragma mark - 聊天室 KV 状态变化
@class RCChatroomKVChangeInfo;
/**
IMLib 聊天室 KV 状态变化监听器
设置代理请参考 RCIMClient 的 setRCChatRoomKVStatusChangeDelegate: 方法。
*/
@protocol RCChatRoomKVStatusChangeDelegate <NSObject>
/**
IMLib 刚加入聊天室时 KV 同步完成的回调
- Parameter roomId: 聊天室 Id
*/
- (void)chatRoomKVDidSync:(NSString *)roomId;
/**
IMLib 聊天室 KV 变化的回调
- Parameter roomId: 聊天室 Id
- Parameter entry: KV 字典,如果刚进入聊天室时存在 KV会通过此回调将所有 KV 返回,再次回调时为其他人设置或者修改 KV
*/
- (void)chatRoomKVDidUpdate:(NSString *)roomId entry:(NSDictionary<NSString *, NSString *> *)entry;
/**
IMLib 聊天室 KV 被删除的回调
- Parameter roomId: 聊天室 Id
- Parameter 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
#pragma mark - 聊天室成员变化监听器
@protocol RCChatRoomMemberDelegate <NSObject>
/**
聊天室成员加入或退出的回调
- Parameter members: 变更的用户列表
- Parameter roomId: 聊天室 Id
- Warning: 子线程回调
为了保证接口兼容性,该回调和下面的回调 memberDidChange:
会同时触发,建议使用下面的回调
*/
- (void)memberDidChange:(NSArray<RCChatRoomMemberAction *> *)members inRoom:(NSString *)roomId;
/**
聊天室成员加入或退出的回调
- Parameter actionModel: 变更的事件模型
- Warning: 子线程回调
为了保证接口兼容性,该回调和上面的回调 memberDidChange:inRoom:
会同时触发,建议使用该回调
- Since: 5.6.7
*/
- (void)memberDidChange:(RCChatRoomMemberActionModel *)actionModel;
@end
#pragma mark - 聊天室事件通知
/**
聊天室事件通知
封禁、解封、禁言、解除禁言、多端同步相关事件等
- Since: 5.4.5
*/
@protocol RCChatRoomNotifyEventDelegate <NSObject>
/**
多端登录相关事件通知回调
包含三种通知 case
1. 多端登录情况,一端加入聊天室,需要通知另一终端
2. 多端登录情况,一端退出聊天室,需要通知另一终端
3. 用户多端加入聊天室场景:用户在 iOS 端加入聊天室,在 Web 端登录后又加入一个新的聊天室,自动将用户从上一个聊天室踢出
通知被踢出聊天室中的所有成员,包括被踢出用户
case 3 如果开通了一个用户可加入多个聊天室的情况不会进行通知
- Parameter event: 聊天室 RCChatRoomSyncEvent
*/
- (void)chatRoomNotifyMultiLoginSync:(RCChatRoomSyncEvent *)event;
/**
封禁用户相关事件通知回调
包含两种通知 case
1. 封禁用户,聊天室中所有成员,包括被封禁用户
注:
* 封禁后用户被自动踢出聊天室
* 封禁后用户不会再收到被踢出的通知
* 是否接收通知取决于 server API 的入参 needNotify默认为 false 不通知)
2. 解除封禁,被解除封禁的成员
注:
* 用户未在线时,再登录时不会收到通知
* 服务端仅对主动解除封禁做通知,封禁时间到了,自动解除的不通知, 此刻调用加入聊天室接口可成功
* 仅对解除封禁的本人做通知,是否接收通知取决于 server API 的入参 needNotify默认为 false 不通知)
封禁时长最大值为43200分钟/1个月, 最小值1分钟
- Parameter event: 聊天室 RCChatRoomMemberBlockEvent
*/
- (void)chatRoomNotifyBlock:(RCChatRoomMemberBlockEvent *)event;
/**
禁言相关事件通知回调
包含以下 case
注:
* 禁言,受到白名单保护,即白名单中用户不会被禁言
* 是否接收通知取决于 server API 的入参 needNotify默认为 false 不通知)。通知范围:
1. 禁言指定聊天室中用户,通知指定聊天室中任何成员
2. 解除指定聊天室中用户禁言,通知指定聊天室中任何成员
注:
* 全体禁言,也受到白名单保护,即白名单中用户不会被禁言
* 是否接收通知取决于 server API 的入参 needNotify默认为 false 不通知)。通知范围:
3. 聊天室全体禁言,通知聊天室中所有成员
4. 解除聊天室全体禁言,通知聊天室中所有成员
注:
* 白名单是聊天室维度,添加后,用户在此聊天室内无法被设置禁言,即被保护
生命周期跟随聊天室,销毁后,清空白名单,重建聊天室时,需要再次调用接口添加
* 是否接收通知取决于 server API 的入参 needNotify默认为 false 不通知)。通知范围:
5. 添加禁言用户白名单,通知聊天室中所有成员
6. 移出禁言用户白名单,通知聊天室中所有成员
注:
* 全局禁言是最高优先级,全局禁言后,禁言用户在所有聊天室内都无法发言,即便配置白名单也不行
* 只有全局禁言或解除全局禁言的用户可以收到通知。是否接收通知取决于 server API 的入参 needNotify默认为 false 不通知)
7. 用户聊天室全局禁言,通知被全局禁言用户
8. 解除用户聊天室全局禁言,通知被解除全局禁言用户
禁言时长最大值为43200分钟/1个月, 最小值1分钟
- Parameter event: 聊天室 ```RCChatRoomMemberBanEvent```
*/
- (void)chatRoomNotifyBan:(RCChatRoomMemberBanEvent *)event;
@end
NS_ASSUME_NONNULL_END
#endif /* RCChatRoomProtocol_h */

View File

@@ -0,0 +1,45 @@
//
// RCChatRoomSyncEvent.h
// RongChatRoom
//
// Created by chinaspx on 2023/5/6.
// Copyright © 2023 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "RCChatRoomEnumDefine.h"
NS_ASSUME_NONNULL_BEGIN
@interface RCChatRoomSyncEvent : NSObject
/*!
聊天室 ID
*/
@property (nonatomic, copy) NSString *chatroomId;
/**
同步通知的变更状态
*/
@property (nonatomic, assign) RCChatRoomSyncStatus status;
/**
如果status是0的情况区分离开类型
1自己主动离开
2多端加入互踢导致离开
*/
@property (nonatomic, assign) NSInteger reason;
/**
同步通知的变更时间
用户加入/退出/被踢的时间(毫秒时间戳)
*/
@property (nonatomic, assign) long long time;
/**
附加信息
*/
@property (nonatomic, copy, nullable) NSString *extra;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,29 @@
//
// RCChatroomKVChangeInfo.h
// RongChatRoom
//
// Created by shuai shao on 2025/4/21.
// Copyright © 2025 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface RCChatroomKVChangeInfo : NSObject
/// 房间 ID。
@property (nonatomic, copy, readonly) NSString *roomId;
/// 发生变化的 Key。
@property (nonatomic, copy, readonly) NSString *key;
/// 发生变化后的 Value。
@property (nonatomic, copy, readonly, nullable) NSString *value;
/// 是否是删除。
@property (nonatomic, assign, readonly) BOOL isDelete;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,57 @@
//
// RCChatroomKVNotificationMessage.h
// RongIMLib
//
// Created by 孙浩 on 2019/10/14.
// Copyright © 2019 RongCloud. All rights reserved.
//
#import <RongIMLibCore/RongIMLibCore.h>
NS_ASSUME_NONNULL_BEGIN
/// 聊天室自定义属性通知消息的类型名
#define RCChatroomKVNotificationMessageTypeIdentifier @"RC:chrmKVNotiMsg"
typedef NS_ENUM(NSInteger, RCChatroomKVNotificationType) {
/// 设置 KV 的操作
RCChatroomKVNotificationTypeSet = 1,
/// 删除 KV 的操作
RCChatroomKVNotificationTypeRemove = 2
};
/**
聊天室自定义属性通知消息
不要随意构造此类消息发送,调用设置或者删除接口时会自动构建。
此消息不存储不计入未读消息数。
- Remark: 通知类消息
*/
@interface RCChatroomKVNotificationMessage : RCMessageContent
/// 聊天室操作的类型
@property (nonatomic, assign) RCChatroomKVNotificationType type;
/// 聊天室属性名称
@property (nonatomic, copy) NSString *key;
/// 聊天室属性对应的值
@property (nonatomic, copy) NSString *value;
/*!
初始化聊天室自定义属性通知消息
- Parameter key: 聊天室属性名称
- Parameter value: 聊天室属性对应的值(删除 key 时不用传)
- Parameter extra: 通知消息的自定义字段
- Returns: 聊天室自定义属性通知消息的对象
*/
+ (instancetype)notificationWithType:(RCChatroomKVNotificationType)type
key:(NSString *)key
value:(NSString *_Nullable)value
extra:(NSString *)extra;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,39 @@
//
// RCJoinChatRoomResponse.h
// RongChatRoom
//
// Created by chinaspx on 2023/7/31.
// Copyright © 2023 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface RCJoinChatRoomResponse : NSObject
// 创建时间(毫秒时间戳)
@property (nonatomic, assign) long long createTime;
// 成员数量
@property (nonatomic, assign) NSInteger memberCount;
// 是否全局禁言
@property (nonatomic, assign) BOOL isAllChatRoomBanned;
// 是否当前用户被禁言
@property (nonatomic, assign) BOOL isCurrentUserBanned;
// 当前用户是否在此聊天室被禁言
@property (nonatomic, assign) BOOL isCurrentChatRoomBanned;
// 当前用户是否在此聊天室的白名单中
@property (nonatomic, assign) BOOL isCurrentChatRoomInWhitelist;
// 加入时间(毫秒时间戳)
// - Since: 5.10.2
@property (nonatomic, assign) long long joinTime;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,34 @@
//
// RongChatRoom.h
// RongChatRoom
//
// Created by 张改红 on 2020/8/12.
// Copyright © 2020 张改红。All rights reserved.
//
#import <Foundation/Foundation.h>
//! Project version number for RongChatRoom.
FOUNDATION_EXPORT double RongChatRoomVersionNumber;
//! Project version string for RongChatRoom.
FOUNDATION_EXPORT const unsigned char RongChatRoomVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <RongChatRoom/PublicHeader.h>
#import <RongChatRoom/RCChatRoomClient.h>
#import <RongChatRoom/RCChatRoomProtocol.h>
#import <RongChatRoom/RCChatRoomEnumDefine.h>
#import <RongChatRoom/RCChatRoomInfo.h>
#import <RongChatRoom/RCChatroomKVNotificationMessage.h>
#import <RongChatRoom/RCChatRoomMemberInfo.h>
#import <RongChatRoom/RCChatroomKVChangeInfo.h>
#import <RongChatRoom/RCChatRoomMemberAction.h>
#import <RongChatRoom/RCChatRoomMemberActionModel.h>
#import <RongChatRoom/RCChatRoomSyncEvent.h>
#import <RongChatRoom/RCChatRoomMemberBlockEvent.h>
#import <RongChatRoom/RCChatRoomMemberBanEvent.h>
#import <RongChatRoom/RCJoinChatRoomResponse.h>
#import <RongChatRoom/RCChatRoomClient+Deprecated.h>

View File

@@ -0,0 +1,6 @@
framework module RongChatRoom {
umbrella header "RongChatRoom.h"
export *
module * { export * }
}

View File

@@ -0,0 +1,85 @@
//
// RCChatRoomClient+Deprecated.h
// RongChatRoom
//
// Created by zgh on 2024/12/27.
// Copyright © 2024 RongCloud. All rights reserved.
//
#import <RongChatRoom/RongChatRoom.h>
NS_ASSUME_NONNULL_BEGIN
@interface RCChatRoomClient (Deprecated)
#pragma mark - 聊天室操作
/*!
加入聊天室(如果聊天室不存在则会创建)
- Parameter targetId: 聊天室 ID最大长度为 64 个字符
- Parameter messageCount: 进入聊天室时获取历史消息的数量,-1 <= messageCount <= 50
- Parameter successBlock: 加入聊天室成功的回调
- Parameter errorBlock: 加入聊天室失败的回调 [status: 加入聊天室失败的错误码]
可以通过传入的 messageCount 设置加入聊天室成功之后需要获取的历史消息数量。
-1 表示不获取任何历史消息0 表示不特殊设置而使用SDK默认的设置默认为获取 10 条0 < messageCount <= 50
为具体获取的消息数量,最大值为 50。注如果是 7.x 系统获取历史消息数量不要大于 30
从5.3.1版本开始, 加入聊天室后,断网重新加入聊天室默认获取聊天室消息条数,为主动加入时获取的历史消息条数。由于每次传入的条数固定, 可能会导致消息重复App 需要做消息排重。
- Warning: 没有加入过的聊天室(或杀死 app 重新打开),调用该接口会把该聊天室本地的消息与 KV 清除
- Remark: 聊天室
*/
- (void)joinChatRoom:(NSString *)targetId
messageCount:(int)messageCount
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode status))errorBlock
__deprecated_msg("Use [RCChatRoomClient joinExistChatRoom:messageCount:successBlock:errorBlock:] instead");
/*!
加入已经存在的聊天室(如果聊天室不存在返回错误 23410人数超限返回错误 23411
- Parameter targetId: 聊天室 ID最大长度为 64 个字符
- Parameter messageCount: 进入聊天室时获取历史消息的数量,-1 <= messageCount <= 50
- Parameter successBlock: 加入聊天室成功的回调
- Parameter errorBlock: 加入聊天室失败的回调 [status: 加入聊天室失败的错误码]
可以通过传入的 messageCount 设置加入聊天室成功之后,需要获取的历史消息数量。
-1 表示不获取任何历史消息0 表示不特殊设置而使用SDK默认的设置默认为获取 10 条0 < messageCount <= 50
为具体获取的消息数量,最大值为 50。
没有加入过的聊天室(或杀死 app 重新打开),调用该接口会把该聊天室本地的消息与 KV 清除
- Remark: 聊天室
*/
- (void)joinExistChatRoom:(NSString *)targetId
messageCount:(int)messageCount
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode status))errorBlock
__deprecated_msg("Use [RCChatRoomClient joinExistChatRoom:messageCount:successBlock:errorBlock:] instead");
#pragma mark-- 监听器
/*!
设置 IMLib 的聊天室状态监听器
- Parameter delegate: IMLib 聊天室状态监听器
- Remark: 聊天室
*/
- (void)setChatRoomStatusDelegate:(id<RCChatRoomStatusDelegate>)delegate
__deprecated_msg("Use [RCChatRoomClient addChatRoomStatusDelegate:] instead");
/*!
设置聊天室 KV 状态变化监听器
- Parameter delegate: 聊天室 KV 状态变化的监听器
可以设置并实现此 delegate 来进行聊天室状态变化的监听 。SDK 会在回调中通知您聊天室状态的改变。
- Remark: 功能设置
*/
- (void)setRCChatRoomKVStatusChangeDelegate:(id<RCChatRoomKVStatusChangeDelegate>)delegate
__deprecated_msg("Use [RCChatRoomClient addChatRoomKVStatusChangeDelegate:] instead");
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,428 @@
//
// RCChatRoomClient.h
// RongIMLib
//
// Created by 张改红 on 2020/7/28.
// Copyright © 2020 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <RongIMLibCore/RongIMLibCore.h>
#import "RCChatRoomProtocol.h"
#import "RCChatRoomInfo.h"
NS_ASSUME_NONNULL_BEGIN
@class RCJoinChatRoomResponse;
@interface RCChatRoomClient : NSObject
+ (instancetype)sharedChatRoomClient;
#pragma mark - 聊天室操作
/*!
加入聊天室(如果聊天室不存在则会创建)
- Parameter targetId: 聊天室 ID最大长度为 64 个字符
- Parameter messageCount: 进入聊天室时获取历史消息的数量,-1 <= messageCount <= 50
- Parameter extra: 附加信息,默认最大长度为 128 个字符,服务可配置
- Parameter successBlock: 加入聊天室成功的回调
- Parameter errorBlock: 加入聊天室失败的回调 [status: 加入聊天室失败的错误码]
- Remark: 聊天室
- Since: 5.10.2
*/
- (void)joinChatRoom:(NSString *)targetId
messageCount:(int)messageCount
extra:(nullable NSString *)extra
successBlock:(nullable void (^)(RCJoinChatRoomResponse *response))successBlock
errorBlock:(nullable void (^)(RCErrorCode status))errorBlock;
/*!
加入已经存在的聊天室(如果聊天室不存在返回错误 23410人数超限返回错误 23411
- Parameter targetId: 聊天室 ID最大长度为 64 个字符
- Parameter messageCount: 进入聊天室时获取历史消息的数量,-1 <= messageCount <= 50
- Parameter successBlock: 加入聊天室成功的回调
- Parameter errorBlock: 加入聊天室失败的回调 [status: 加入聊天室失败的错误码]
- Remark: 聊天室
- Since: 5.6.3
*/
- (void)joinExistChatRoom:(NSString *)targetId
messageCount:(int)messageCount
successBlock:(nullable void (^)(RCJoinChatRoomResponse *response))successBlock
errorBlock:(nullable void (^)(RCErrorCode status))errorBlock;
/*!
加入已经存在的聊天室(如果聊天室不存在返回错误 23410人数超限返回错误 23411
- Parameter targetId: 聊天室 ID最大长度为 64 个字符
- Parameter messageCount: 进入聊天室时获取历史消息的数量,-1 <= messageCount <= 50
- Parameter extra: 附加信息,最大长度为超过 128 个字符
- Parameter successBlock: 加入聊天室成功的回调
- Parameter errorBlock: 加入聊天室失败的回调 [status: 加入聊天室失败的错误码]
- Remark: 聊天室
- Since: 5.10.2
*/
- (void)joinExistChatRoom:(NSString *)targetId
messageCount:(int)messageCount
extra:(nullable NSString *)extra
successBlock:(nullable void (^)(RCJoinChatRoomResponse *response))successBlock
errorBlock:(nullable void (^)(RCErrorCode status))errorBlock;
/*!
退出聊天室
- Parameter targetId: 聊天室 ID最大长度为 64 个字符
- Parameter successBlock: 退出聊天室成功的回调
- Parameter errorBlock: 退出聊天室失败的回调 [status:退出聊天室失败的错误码]
- Remark: 聊天室
*/
- (void)quitChatRoom:(NSString *)targetId
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode status))errorBlock;
/*!
获取聊天室的信息(包含部分成员信息和当前聊天室中的成员总数)
- Parameter targetId: 聊天室 ID最大长度为 64 个字符
- Parameter count: 需要获取的成员信息的数量(目前获取到的聊天室信息中仅包含不多于 20 人的成员信息,即 0 <= count <=
20传入 0 获取到的聊天室信息将或仅包含成员总数,不包含具体的成员列表)
- Parameter order: 需要获取的成员列表的顺序(最早加入或是最晚加入的部分成员)
- Parameter successBlock: 获取成功的回调 [chatRoomInfo:聊天室信息]
- Parameter errorBlock: 获取失败的回调 [status:获取失败的错误码]
因为聊天室一般成员数量巨大,权衡效率和用户体验,目前返回的聊天室信息仅包含不多于 20 人的成员信息和当前成员总数。
如果您使用 RC_ChatRoom_Member_Asc 升序方式查询,将返回最早加入的成员信息列表;
如果您使用 RC_ChatRoom_Member_Desc 降序方式查询,将返回最晚加入的成员信息列表。
上述两种方式查询,返回的成员列表都是按加入时间从旧到新。
- Remark: 聊天室
*/
- (void)getChatRoomInfo:(NSString *)targetId
count:(int)count
order:(RCChatRoomMemberOrder)order
success:(nullable void (^)(RCChatRoomInfo *chatRoomInfo))successBlock
error:(nullable void (^)(RCErrorCode status))errorBlock;
/*!
添加 IMLib 的聊天室状态监听器
- Parameter delegate: IMLib 聊天室状态监听器
*/
- (void)addChatRoomStatusDelegate:(id<RCChatRoomStatusDelegate>)delegate NS_SWIFT_NAME(addChatRoomStatusDelegate(_:));
/*!
移除 IMLib 的聊天室状态监听器
- Parameter delegate: IMLib 聊天室状态监听器
*/
- (void)removeChatRoomStatusDelegate:(id<RCChatRoomStatusDelegate>)delegate
NS_SWIFT_NAME(removeChatRoomStatusDelegate(_:));
/*!
获取 IMLib 的聊天室状态监听器
- Returns: 所有 IMLib 聊天室状态监听器
*/
- (NSArray<id<RCChatRoomStatusDelegate>> *)allChatRoomStatusDelegates;
/*!
从服务器端获取聊天室的历史消息
- Parameter targetId: 聊天室ID最大长度为 64 个字符
- Parameter recordTime: 起始的消息发送时间戳,毫秒
- Parameter count: 需要获取的消息数量, 0 < count <= 200
- Parameter order: 拉取顺序RC_Timestamp_Desc:倒序RC_Timestamp_ASC:正序
- Parameter successBlock: 获取成功的回调 [messages:获取到的历史消息数组, syncTime:下次拉取消息的时间戳]
- Parameter errorBlock: 获取失败的回调 [status:获取失败的错误码]
此方法从服务器端获取聊天室的历史消息,但是必须先开通聊天室消息云存储功能。
指定开始时间,比如2016年9月1日10点(1472695200000),
默认是0(正序:从存储的第一条消息开始拉取,倒序:从存储的最后一条消息开始拉取)
*/
- (void)getRemoteChatroomHistoryMessages:(NSString *)targetId
recordTime:(long long)recordTime
count:(int)count
order:(RCTimestampOrder)order
success:(nullable void (^)(NSArray<RCMessage *> *messages,
long long syncTime))successBlock
error:(nullable void (^)(RCErrorCode status))errorBlock;
#pragma mark - 聊天室状态存储 (使用前必须先联系商务开通)
/*!
添加聊天室 KV 状态变化监听
- Parameter delegate: 代理
*/
- (void)addChatRoomKVStatusChangeDelegate:(id<RCChatRoomKVStatusChangeDelegate>)delegate
NS_SWIFT_NAME(addChatRoomKVStatusChangeDelegate(_:));
/*!
移除聊天室 KV 状态变化监听
- Parameter delegate: 代理
*/
- (void)removeChatRoomKVStatusChangeDelegate:(id<RCChatRoomKVStatusChangeDelegate>)delegate
NS_SWIFT_NAME(removeChatRoomKVStatusChangeDelegate(_:));
/*!
获取聊天室 KV 状态变化监听
- Returns: 所有聊天室 KV 状态变化的监听器
*/
- (NSArray<id<RCChatRoomKVStatusChangeDelegate>> *)allChatRoomKVStatusChangeDelegates;
/**
设置聊天室自定义属性
- Parameter chatroomId: 聊天室 ID最大长度为 64 个字符
- Parameter key: 聊天室属性名称Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,最大长度 128 个字符
- Parameter value: 聊天室属性对应的值,最大长度 4096 个字符
- Parameter sendNotification: 是否需要发送通知,如果发送通知,聊天室中的其他用户会接收到 RCChatroomKVNotificationMessage
通知消息,消息内容中包含操作类型(type)、属性名称(key)、属性名称对应的值(value)和自定义字段(extra)
- Parameter autoDelete: 用户掉线或退出时,是否自动删除该 Key、Value 值;自动删除时不会发送通知
- Parameter notificationExtra: 通知的自定义字段RC:chrmKVNotiMsg 通知消息中会包含此字段,最大长度 2 kb
- Parameter successBlock: 成功回调
- Parameter errorBlock: 失败回调
必须先开通聊天室状态存储功能
设置聊天室自定义属性,当 key 不存在时,代表增加属性; 当 key 已经存在时,代表更新属性的值,且只有 key
的创建者可以更新属性的值。
- Remark: 聊天室
*/
- (void)setChatRoomEntry:(NSString *)chatroomId
key:(NSString *)key
value:(NSString *)value
sendNotification:(BOOL)sendNotification
autoDelete:(BOOL)autoDelete
notificationExtra:(nullable NSString *)notificationExtra
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode))errorBlock;
/**
强制设置聊天室自定义属性
- Parameter chatroomId: 聊天室 ID最大长度为 64 个字符
- Parameter key: 聊天室属性名称Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,最大长度 128 个字符
- Parameter value: 聊天室属性对应的值,最大长度 4096 个字符
- Parameter sendNotification: 是否需要发送通知,如果发送通知,聊天室中的其他用户会接收到 RCChatroomKVNotificationMessage
通知消息,消息内容中包含操作类型(type)、属性名称(key)、属性名称对应的值(value)和自定义字段(extra)
- Parameter autoDelete: 用户掉线或退出时,是否自动删除该 Key、Value 值;自动删除时不会发送通知
- Parameter notificationExtra: 通知的自定义字段RCChatroomKVNotificationMessage 通知消息中会包含此字段,最大长度 2 kb
- Parameter successBlock: 成功回调
- Parameter errorBlock: 失败回调
必须先开通聊天室状态存储功能
强制设置聊天室自定义属性,当 key 不存在时,代表增加属性; 当 key 已经存在时,代表更新属性的值。
- Remark: 聊天室
*/
- (void)forceSetChatRoomEntry:(NSString *)chatroomId
key:(NSString *)key
value:(NSString *)value
sendNotification:(BOOL)sendNotification
autoDelete:(BOOL)autoDelete
notificationExtra:(nullable NSString *)notificationExtra
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode))errorBlock;
/**
批量设置聊天室自定义属性
- Parameter chatroomId: 聊天室 ID最大长度为 64 个字符
- Parameter entries: 聊天室属性key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,最大长度 128 个字符value 聊天室属性对应的值,最大长度 4096 个字符,最多一次设置 10 条
- Parameter isForce: 是否强制覆盖
- Parameter autoDelete: 用户掉线或退出时,是否自动删除该 Key、Value 值
- Parameter successBlock: 成功回调
- Parameter errorBlock: 失败回调,当 nErrorCode 为 RC_KV_STORE_NOT_ALL_SUCCESS23428的时候entries 才会有值key 为设置失败的 keyvalue 为该 key 对应的错误码)
必须先开通聊天室状态存储功能
- Remark: 聊天室
*/
- (void)setChatRoomEntries:(NSString *)chatroomId
entries:(NSDictionary<NSString *, NSString *> *)entries
isForce:(BOOL)isForce
autoDelete:(BOOL)autoDelete
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode,
NSDictionary<NSString *, NSNumber *> *failureEntries))errorBlock;
/**
获取聊天室单个属性
- Parameter chatroomId: 聊天室 ID最大长度为 64 个字符
- Parameter key: 聊天室属性名称
- Parameter successBlock: 成功回调
- Parameter errorBlock: 失败回调
必须先开通聊天室状态存储功能
- Remark: 聊天室
*/
- (void)getChatRoomEntry:(NSString *)chatroomId
key:(NSString *)key
success:(nullable void (^)(NSDictionary<NSString *, NSString *> *entry))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode))errorBlock;
/**
获取聊天室所有自定义属性
- Parameter chatroomId: 聊天室 ID最大长度为 64 个字符
- Parameter successBlock: 成功回调
- Parameter errorBlock: 失败回调
必须先开通聊天室状态存储功能
- Remark: 聊天室
*/
- (void)getAllChatRoomEntries:(NSString *)chatroomId
success:(nullable void (^)(NSDictionary<NSString *, NSString *> *entry))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode))errorBlock;
/**
删除聊天室自定义属性
- Parameter chatroomId: 聊天室 ID最大长度为 64 个字符
- Parameter key: 聊天室属性名称
- Parameter sendNotification: 是否需要发送通知,如果发送通知,聊天室中的其他用户会接收到 RCChatroomKVNotificationMessage
通知消息,消息内容中包含操作类型(type)、属性名称(key)、属性名称对应的值(value)和自定义字段(extra)
- Parameter notificationExtra: 通知的自定义字段RCChatroomKVNotificationMessage 通知消息中会包含此字段,最大长度 2 kb
- Parameter successBlock: 成功回调
- Parameter errorBlock: 失败回调
必须先开通聊天室状态存储功能
删除聊天室自定义属性,只有自己设置的属性可以被删除。
- Remark: 聊天室
*/
- (void)removeChatRoomEntry:(NSString *)chatroomId
key:(NSString *)key
sendNotification:(BOOL)sendNotification
notificationExtra:(nullable NSString *)notificationExtra
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode))errorBlock;
/**
强制删除聊天室自定义属性
- Parameter chatroomId: 聊天室 ID最大长度为 64 个字符
- Parameter key: 聊天室属性名称
- Parameter sendNotification: 是否需要发送通知,如果发送通知,聊天室中的其他用户会接收到 RCChatroomKVNotificationMessage
通知消息,消息内容中包含操作类型(type)、属性名称(key)、属性名称对应的值(value)和自定义字段(extra)
- Parameter notificationExtra: 通知的自定义字段RCChatroomKVNotificationMessage 通知消息中会包含此字段,最大长度 2 kb
- Parameter successBlock: 成功回调
- Parameter errorBlock: 失败回调
必须先开通聊天室状态存储功能
强制删除聊天室自定义属性。
- Remark: 聊天室
*/
- (void)forceRemoveChatRoomEntry:(NSString *)chatroomId
key:(NSString *)key
sendNotification:(BOOL)sendNotification
notificationExtra:(nullable NSString *)notificationExtra
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode))errorBlock;
/**
批量删除聊天室自定义属性
- Parameter chatroomId: 聊天室 ID最大长度为 64 个字符
- Parameter keys: 聊天室属性名称,最多一次删除 10 条
- Parameter isForce: 是否强制覆盖
- Parameter successBlock: 成功回调
- Parameter errorBlock: 失败回调,当 nErrorCode 为 RC_KV_STORE_NOT_ALL_SUCCESS23428的时候entries 才会有值key 为设置失败的 keyvalue 为该 key 对应的错误码)
必须先开通聊天室状态存储功能
- Remark: 聊天室
*/
- (void)removeChatRoomEntries:(NSString *)chatroomId
keys:(NSArray<NSString *> *)keys
isForce:(BOOL)isForce
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode,
NSDictionary<NSString *, NSNumber *> *failureEntries))errorBlock;
#pragma mark - 聊天室成员变化监听器
/*!
设置聊天室成员变化的监听器
可以设置并实现此拦截器来监听聊天室成员的加入或退出
- Remark: 功能设置
*/
@property (nonatomic, weak, nullable) id<RCChatRoomMemberDelegate> memberDelegate;
/// 绑定聊天室 ID 和 RTCRoomID
/// - Parameter chatRoomId: 聊天室 ID最大长度为 64 个字符
/// - Parameter rtcRoomId: rtc room ID
/// - Parameter successBlock: 成功回调
/// - Parameter errorBlock: 失败回调
- (void)bindChatRoom:(NSString *)chatRoomId
withRTCRoom:(NSString *)rtcRoomId
success:(nullable void (^)(void))successBlock
error:(nullable void (^)(RCErrorCode nErrorCode))errorBlock;
#pragma mark - 聊天室事件通知监听器
/**
添加 IMLib 的聊天室事件通知监听器
聊天室事件通知
封禁、解封、禁言、解除禁言、多端同步相关事件等
- Parameter delegate: IMLib 聊天室事件通知监听器
- Since: 5.4.5
*/
- (void)addChatRoomNotifyEventDelegate:(id<RCChatRoomNotifyEventDelegate>)delegate
NS_SWIFT_NAME(addChatRoomNotifyEventDelegate(_:));
/**
移除 IMLib 的聊天室事件通知监听器
- Parameter delegate: IMLib 聊天室事件通知监听器
- Since: 5.4.5
*/
- (void)removeChatRoomNotifyEventDelegate:(id<RCChatRoomNotifyEventDelegate>)delegate
NS_SWIFT_NAME(removeChatRoomNotifyEventDelegate(_:));
/**
返回 IMLib 的聊天室事件通知监听器
- Since: 5.4.5
*/
- (NSArray<id<RCChatRoomNotifyEventDelegate>> *)allChatRoomNotifyEventDelegates;
/// 是否允许聊天室消息排重,默认值为 YES
///
/// 排重的场景如下
/// 发送方弱网情况下发送消息,消息到达服务但发送方没有收到服务 ack导致发送方认为消息发送失败
/// 此种情况下,服务端和接收方都会收到第一条消息
/// 此时发送方重发该消息再次达到服务那么此时服务端会有两条消息消息内容相同messageUid 不同)
/// 接收方会收到两条内容相同但 messageUid 不同的消息SDK 此时会把第二条相同内容消息排重掉
/// 以此来保证重发的相同内容消息,发送方只有一条消息,接收方也只有一条消息
///
/// 当消息量少时,消息排重影响不大;但是本地存在大量消息时,排重会出现性能问题
/// 当 APP 本地存在大量消息,且发生收消息卡顿时,建议将排重关闭
/// 在初始化接口之后连接之前调用
///
/// - Parameter enableCheck: 是否允许聊天室消息排重
///
/// - Since: 5.8.2
- (void)setCheckChatRoomDuplicateMessage:(BOOL)enableCheck;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,162 @@
//
// RCChatRoomEnumDefine.h
// RongChatRoom
//
// Created by 张改红 on 2020/8/12.
// Copyright © 2020 张改红。All rights reserved.
//
#import <Foundation/Foundation.h>
#ifndef RCChatRoomEnumDefine_h
#define RCChatRoomEnumDefine_h
#pragma mark RCChatRoomStatus - 聊天室状态码
/*!
聊天室状态码
*/
typedef NS_ENUM(NSInteger, RCChatRoomStatus) {
/*!
正在加入聊天室中
*/
RCChatRoomStatus_Joining = 1,
/*!
加入聊天室成功
*/
RCChatRoomStatus_Joined = 2,
/*!
加入聊天室失败
*/
RCChatRoomStatus_JoinFailed = 3,
/*!
退出了聊天室
*/
RCChatRoomStatus_Quited = 4,
/*!
聊天室被销毁
*/
RCChatRoomStatus_Destroyed = 5,
/*!
聊天室被重置
由于聊天室长时间不活跃,已经被系统回收。聊天室 KV 已经被清空,请开发者刷新界面。
*/
RCChatRoomStatus_Reset = 6,
};
#pragma mark RCChatRoomMemberOrder - 聊天室成员排列顺序
/*!
聊天室成员的排列顺序
*/
typedef NS_ENUM(NSUInteger, RCChatRoomMemberOrder) {
/*!
升序,返回最早加入的成员列表
*/
RC_ChatRoom_Member_Asc = 1,
/*!
降序,返回最晚加入的成员列表
*/
RC_ChatRoom_Member_Desc = 2,
};
#pragma mark RCChatRoomMemberActionType - 聊天室成员加入或退出
/*!
聊天室成员加入或者退出
*/
typedef NS_ENUM(NSInteger, RCChatRoomMemberActionType) {
/*!
聊天室成员退出
*/
RC_ChatRoom_Member_Quit = 0,
/*!
聊天室成员加入
*/
RC_ChatRoom_Member_Join = 1,
};
#pragma mark RCChatRoomEvent - 聊天室事件
/*!
聊天室多端登录同步时,消息中的状态
*/
typedef NS_ENUM(NSInteger, RCChatRoomSyncStatus) {
/*!
多端登录同步用户离开聊天室,
1. 同一用户在一终端离开聊天室,通知另一终端
2. 用户多端加入聊天室场景:用户在 Android 端加入聊天室,在 Web 端登录后又加入一个新的聊天室,自动将用户从上一个聊天室踢出
被踢出聊天室中的所有成员,包括被踢出用户
*/
RCChatRoomSyncStatusQuit = 0,
/*!
多端登录同步用户加入聊天室,
同一用户在一终端加入聊天室,通知另一终端
*/
RCChatRoomSyncStatusJoin = 1
};
/*!
聊天室解封/封禁用户消息,操作类型枚举
*/
typedef NS_ENUM(NSInteger, RCChatRoomMemberOperateType) {
/*!
解封
*/
RCChatRoomMemberOperateTypeDeblock = 0,
/*!
封禁
*/
RCChatRoomMemberOperateTypeBlocked = 1
};
/*!
聊天室禁言相关消息,操作类型枚举
*/
typedef NS_ENUM(NSInteger, RCChatRoomMemberBanType) {
/*!
解除指定聊天室中用户禁言
*/
RCChatRoomMemberBanTypeUnmuteUsers = 0,
/*!
禁言指定聊天室中用户
*/
RCChatRoomMemberBanTypeMuteUsers = 1,
/*!
解除聊天室全体禁言
*/
RCChatRoomMemberBanTypeUnmuteAll = 2,
/*!
聊天室全体禁言
*/
RCChatRoomMemberBanTypeMuteAll = 3,
/*!
移出禁言用户白名单
*/
RCChatRoomMemberBanTypeRemoveWhitelist = 4,
/*!
添加禁言用户白名单
*/
RCChatRoomMemberBanTypeAddWhitelist = 5,
/*!
解除用户聊天室全局禁言
*/
RCChatRoomMemberBanTypeUnmuteGlobal = 6,
/*!
用户聊天室全局禁言
*/
RCChatRoomMemberBanTypeMuteGlobal = 7
};
#endif /* RCChatRoomEnumDefine_h */

View File

@@ -0,0 +1,40 @@
//
// RCChatRoomInfo.h
// RongIMLib
//
// Created by 岑裕 on 16/1/11.
// Copyright © 2016 年 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "RCChatRoomMemberInfo.h"
#import "RCChatRoomEnumDefine.h"
/*!
聊天室信息类
*/
@interface RCChatRoomInfo : NSObject
/*!
聊天室 ID
*/
@property (nonatomic, copy) NSString *targetId;
/*!
包含的成员信息类型
*/
@property (nonatomic, assign) RCChatRoomMemberOrder memberOrder;
/*!
聊天室中的部分成员信息 RCChatRoomMemberInfo 列表
如果成员类型为RC_ChatRoom_Member_Asc则为最早加入的成员列表按成员加入时间升序排列
如果成员类型为RC_ChatRoom_Member_Desc则为最晚加入的成员列表按成员加入时间降序排列。
*/
@property (nonatomic, strong) NSArray<RCChatRoomMemberInfo *> *memberInfoArray;
/*!
当前聊天室的成员总数
*/
@property (nonatomic, assign) int totalMemberCount;
@end

View File

@@ -0,0 +1,36 @@
//
// RCChatRoomMemberAction.h
// RongChatRoom
//
// Created by 孙浩 on 2021/7/12.
// Copyright © 2021 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "RCChatRoomEnumDefine.h"
NS_ASSUME_NONNULL_BEGIN
@interface RCChatRoomMemberAction : NSObject
/// 成员 ID
@property (nonatomic, copy) NSString *memberId;
/// 成员加入或者退出
@property (nonatomic, assign) RCChatRoomMemberActionType action;
/// 附加信息
/// - Since 5.10.2
@property (nonatomic, copy, nullable) NSString *extra;
/*!
RCChatRoomMemberAction 初始化方法
- Parameter memberId: 成员 ID
- Parameter action: 成员加入或退出
*/
- (instancetype)initWithMemberId:(NSString *)memberId action:(RCChatRoomMemberActionType)action;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,37 @@
//
// RCChatRoomMemberActionModel.h
// RongChatRoom
//
// Created by chinaspx on 2023/10/18.
// Copyright © 2023 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@class RCChatRoomMemberAction;
@interface RCChatRoomMemberActionModel : NSObject
/// 聊天室 ID
@property (nonatomic, readonly) NSString *roomId;
/// 聊天室成员变更信息
@property (nonatomic, strong, readonly) NSArray<RCChatRoomMemberAction *> *chatRoomMemberActions;
/// 当前的聊天室人数
@property (nonatomic, assign, readonly) NSUInteger memberCount;
/// 初始化方法
/// - Parameter roomId: 聊天室 ID
/// - Parameter memberActions: 聊天室成员变更信息
/// - Parameter memberCount: 当前的聊天室人数
///
- (instancetype)initWithRoomId:(NSString *)roomId
memberActions:(NSArray<RCChatRoomMemberAction *> *)memberActions
memberCount:(NSUInteger)memberCount;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,46 @@
//
// RCChatRoomMemberBanEvent.h
// RongChatRoom
//
// Created by chinaspx on 2023/5/6.
// Copyright © 2023 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "RCChatRoomEnumDefine.h"
NS_ASSUME_NONNULL_BEGIN
@interface RCChatRoomMemberBanEvent : NSObject
/// 聊天室 ID
@property (nonatomic, copy) NSString *chatroomId;
/**
禁言操作类型,详见枚举值
禁言/解除禁言操作类型:
0解除指定聊天室中用户禁言
1禁言指定聊天室中用户
2解除聊天室全体禁言
3聊天室全体禁言
4: 移出禁言用户白名单
5: 添加禁言用户白名单
6: 解除用户聊天室全局禁言
7用户聊天室全局禁言
*/
@property (nonatomic, assign) RCChatRoomMemberBanType banType;
/// 禁言的总时间(禁言的操作有此字段)(毫秒) ,最大值为 43200 分钟1 个月), 最小值 1 分钟
@property (nonatomic, assign) NSInteger durationTime;
/// 操作时间 (毫秒时间戳)
@property (nonatomic, assign) long long operateTime;
/// 禁言/解禁言用户 ID 列表
@property (nonatomic, copy) NSArray<NSString *> *userIdList;
/// 附加信息
@property (nonatomic, copy, nullable) NSString *extra;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,47 @@
//
// RCChatRoomMemberBlockEvent.h
// RongChatRoom
//
// Created by chinaspx on 2023/5/6.
// Copyright © 2023 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "RCChatRoomEnumDefine.h"
NS_ASSUME_NONNULL_BEGIN
@interface RCChatRoomMemberBlockEvent : NSObject
/*!
聊天室 ID
*/
@property (nonatomic, copy) NSString *chatroomId;
/**
封禁类型0是解封1是封禁
*/
@property (nonatomic, assign) RCChatRoomMemberOperateType operateType;
/**
封禁的总时间,封禁时有此字段(毫秒)最大值为43200分钟1个月, 最小值1分钟
*/
@property (nonatomic, assign) NSInteger durationTime;
/**
操作时间(毫秒时间戳)
*/
@property (nonatomic, assign) long long operateTime;
/**
被封禁/解封的用户 ID 列表
*/
@property (nonatomic, copy) NSArray<NSString *> *userIdList;
/**
附加信息
*/
@property (nonatomic, copy, nullable) NSString *extra;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,26 @@
//
// RCChatRoomMemberInfo.h
// RongIMLib
//
// Created by 岑裕 on 16/1/10.
// Copyright © 2016 年 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
/*!
聊天室成员信息类
*/
@interface RCChatRoomMemberInfo : NSObject
/*!
用户 ID
*/
@property (nonatomic, copy) NSString *userId;
/*!
用户加入聊天室时间Unix 时间戳,毫秒)
*/
@property (nonatomic, assign) long long joinTime;
@end

View File

@@ -0,0 +1,255 @@
//
// RCChatRoomProtocol.h
// RongChatRoom
//
// Created by 张改红 on 2020/8/12.
// Copyright © 2020 张改红。All rights reserved.
//
#ifndef RCChatRoomProtocol_h
#define RCChatRoomProtocol_h
NS_ASSUME_NONNULL_BEGIN
@class RCChatRoomMemberAction, RCChatRoomMemberActionModel, RCJoinChatRoomResponse;
@class RCChatRoomSyncEvent, RCChatRoomMemberBlockEvent, RCChatRoomMemberBanEvent;
typedef NS_ENUM(NSUInteger, RCChatRoomDestroyType) {
/// 开发者主动销毁
RCChatRoomDestroyTypeManual = 0,
/// 聊天室长时间不活跃,被系统自动回收
RCChatRoomDestroyTypeAuto = 3
};
#pragma mark - 聊天室监听器
/*!
IMLib聊天室状态的的监听器
设置IMLib的聊天室状态监听器请参考RCIMClient的setChatRoomStatusDelegate:方法。
*/
@protocol RCChatRoomStatusDelegate <NSObject>
/*!
开始加入聊天室的回调
- Parameter chatroomId: 聊天室ID
*/
- (void)onChatRoomJoining:(NSString *)chatroomId;
/*!
加入聊天室成功的回调
- Parameter chatroomId: 聊天室ID
*/
- (void)onChatRoomJoined:(NSString *)chatroomId response:(RCJoinChatRoomResponse *)response;
- (void)onChatRoomJoined:(NSString *)chatroomId
__deprecated_msg("Use [RCChatRoomStatusDelegate onChatRoomJoined:response:] instead");
/*!
加入聊天室失败的回调
- Parameter chatroomId: 聊天室ID
- Parameter errorCode: 加入失败的错误码
如果错误码是KICKED_FROM_CHATROOM或RC_CHATROOM_NOT_EXIST则不会自动重新加入聊天室App需要按照自己的逻辑处理。
*/
- (void)onChatRoomJoinFailed:(NSString *)chatroomId errorCode:(RCErrorCode)errorCode;
/*!
加入聊天室成功,但是聊天室被重置。接收到此回调后,还会收到 onChatRoomJoined回调。
- Parameter chatroomId: 聊天室ID
*/
- (void)onChatRoomReset:(NSString *)chatroomId;
/*!
退出聊天室成功的回调
- Parameter chatroomId: 聊天室ID
*/
- (void)onChatRoomQuited:(NSString *)chatroomId;
/*!
聊天室被销毁的回调,用户在线的时候房间被销毁才会收到此回调。
- Parameter chatroomId: 聊天室ID
- Parameter type: 聊天室销毁原因
*/
- (void)onChatRoomDestroyed:(NSString *)chatroomId type:(RCChatRoomDestroyType)type;
@end
#pragma mark - 聊天室 KV 状态变化
@class RCChatroomKVChangeInfo;
/**
IMLib 聊天室 KV 状态变化监听器
设置代理请参考 RCIMClient 的 setRCChatRoomKVStatusChangeDelegate: 方法。
*/
@protocol RCChatRoomKVStatusChangeDelegate <NSObject>
/**
IMLib 刚加入聊天室时 KV 同步完成的回调
- Parameter roomId: 聊天室 Id
*/
- (void)chatRoomKVDidSync:(NSString *)roomId;
/**
IMLib 聊天室 KV 变化的回调
- Parameter roomId: 聊天室 Id
- Parameter entry: KV 字典,如果刚进入聊天室时存在 KV会通过此回调将所有 KV 返回,再次回调时为其他人设置或者修改 KV
*/
- (void)chatRoomKVDidUpdate:(NSString *)roomId entry:(NSDictionary<NSString *, NSString *> *)entry;
/**
IMLib 聊天室 KV 被删除的回调
- Parameter roomId: 聊天室 Id
- Parameter 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
#pragma mark - 聊天室成员变化监听器
@protocol RCChatRoomMemberDelegate <NSObject>
/**
聊天室成员加入或退出的回调
- Parameter members: 变更的用户列表
- Parameter roomId: 聊天室 Id
- Warning: 子线程回调
为了保证接口兼容性,该回调和下面的回调 memberDidChange:
会同时触发,建议使用下面的回调
*/
- (void)memberDidChange:(NSArray<RCChatRoomMemberAction *> *)members inRoom:(NSString *)roomId;
/**
聊天室成员加入或退出的回调
- Parameter actionModel: 变更的事件模型
- Warning: 子线程回调
为了保证接口兼容性,该回调和上面的回调 memberDidChange:inRoom:
会同时触发,建议使用该回调
- Since: 5.6.7
*/
- (void)memberDidChange:(RCChatRoomMemberActionModel *)actionModel;
@end
#pragma mark - 聊天室事件通知
/**
聊天室事件通知
封禁、解封、禁言、解除禁言、多端同步相关事件等
- Since: 5.4.5
*/
@protocol RCChatRoomNotifyEventDelegate <NSObject>
/**
多端登录相关事件通知回调
包含三种通知 case
1. 多端登录情况,一端加入聊天室,需要通知另一终端
2. 多端登录情况,一端退出聊天室,需要通知另一终端
3. 用户多端加入聊天室场景:用户在 iOS 端加入聊天室,在 Web 端登录后又加入一个新的聊天室,自动将用户从上一个聊天室踢出
通知被踢出聊天室中的所有成员,包括被踢出用户
case 3 如果开通了一个用户可加入多个聊天室的情况不会进行通知
- Parameter event: 聊天室 RCChatRoomSyncEvent
*/
- (void)chatRoomNotifyMultiLoginSync:(RCChatRoomSyncEvent *)event;
/**
封禁用户相关事件通知回调
包含两种通知 case
1. 封禁用户,聊天室中所有成员,包括被封禁用户
注:
* 封禁后用户被自动踢出聊天室
* 封禁后用户不会再收到被踢出的通知
* 是否接收通知取决于 server API 的入参 needNotify默认为 false 不通知)
2. 解除封禁,被解除封禁的成员
注:
* 用户未在线时,再登录时不会收到通知
* 服务端仅对主动解除封禁做通知,封禁时间到了,自动解除的不通知, 此刻调用加入聊天室接口可成功
* 仅对解除封禁的本人做通知,是否接收通知取决于 server API 的入参 needNotify默认为 false 不通知)
封禁时长最大值为43200分钟/1个月, 最小值1分钟
- Parameter event: 聊天室 RCChatRoomMemberBlockEvent
*/
- (void)chatRoomNotifyBlock:(RCChatRoomMemberBlockEvent *)event;
/**
禁言相关事件通知回调
包含以下 case
注:
* 禁言,受到白名单保护,即白名单中用户不会被禁言
* 是否接收通知取决于 server API 的入参 needNotify默认为 false 不通知)。通知范围:
1. 禁言指定聊天室中用户,通知指定聊天室中任何成员
2. 解除指定聊天室中用户禁言,通知指定聊天室中任何成员
注:
* 全体禁言,也受到白名单保护,即白名单中用户不会被禁言
* 是否接收通知取决于 server API 的入参 needNotify默认为 false 不通知)。通知范围:
3. 聊天室全体禁言,通知聊天室中所有成员
4. 解除聊天室全体禁言,通知聊天室中所有成员
注:
* 白名单是聊天室维度,添加后,用户在此聊天室内无法被设置禁言,即被保护
生命周期跟随聊天室,销毁后,清空白名单,重建聊天室时,需要再次调用接口添加
* 是否接收通知取决于 server API 的入参 needNotify默认为 false 不通知)。通知范围:
5. 添加禁言用户白名单,通知聊天室中所有成员
6. 移出禁言用户白名单,通知聊天室中所有成员
注:
* 全局禁言是最高优先级,全局禁言后,禁言用户在所有聊天室内都无法发言,即便配置白名单也不行
* 只有全局禁言或解除全局禁言的用户可以收到通知。是否接收通知取决于 server API 的入参 needNotify默认为 false 不通知)
7. 用户聊天室全局禁言,通知被全局禁言用户
8. 解除用户聊天室全局禁言,通知被解除全局禁言用户
禁言时长最大值为43200分钟/1个月, 最小值1分钟
- Parameter event: 聊天室 ```RCChatRoomMemberBanEvent```
*/
- (void)chatRoomNotifyBan:(RCChatRoomMemberBanEvent *)event;
@end
NS_ASSUME_NONNULL_END
#endif /* RCChatRoomProtocol_h */

View File

@@ -0,0 +1,45 @@
//
// RCChatRoomSyncEvent.h
// RongChatRoom
//
// Created by chinaspx on 2023/5/6.
// Copyright © 2023 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "RCChatRoomEnumDefine.h"
NS_ASSUME_NONNULL_BEGIN
@interface RCChatRoomSyncEvent : NSObject
/*!
聊天室 ID
*/
@property (nonatomic, copy) NSString *chatroomId;
/**
同步通知的变更状态
*/
@property (nonatomic, assign) RCChatRoomSyncStatus status;
/**
如果status是0的情况区分离开类型
1自己主动离开
2多端加入互踢导致离开
*/
@property (nonatomic, assign) NSInteger reason;
/**
同步通知的变更时间
用户加入/退出/被踢的时间(毫秒时间戳)
*/
@property (nonatomic, assign) long long time;
/**
附加信息
*/
@property (nonatomic, copy, nullable) NSString *extra;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,29 @@
//
// RCChatroomKVChangeInfo.h
// RongChatRoom
//
// Created by shuai shao on 2025/4/21.
// Copyright © 2025 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface RCChatroomKVChangeInfo : NSObject
/// 房间 ID。
@property (nonatomic, copy, readonly) NSString *roomId;
/// 发生变化的 Key。
@property (nonatomic, copy, readonly) NSString *key;
/// 发生变化后的 Value。
@property (nonatomic, copy, readonly, nullable) NSString *value;
/// 是否是删除。
@property (nonatomic, assign, readonly) BOOL isDelete;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,57 @@
//
// RCChatroomKVNotificationMessage.h
// RongIMLib
//
// Created by 孙浩 on 2019/10/14.
// Copyright © 2019 RongCloud. All rights reserved.
//
#import <RongIMLibCore/RongIMLibCore.h>
NS_ASSUME_NONNULL_BEGIN
/// 聊天室自定义属性通知消息的类型名
#define RCChatroomKVNotificationMessageTypeIdentifier @"RC:chrmKVNotiMsg"
typedef NS_ENUM(NSInteger, RCChatroomKVNotificationType) {
/// 设置 KV 的操作
RCChatroomKVNotificationTypeSet = 1,
/// 删除 KV 的操作
RCChatroomKVNotificationTypeRemove = 2
};
/**
聊天室自定义属性通知消息
不要随意构造此类消息发送,调用设置或者删除接口时会自动构建。
此消息不存储不计入未读消息数。
- Remark: 通知类消息
*/
@interface RCChatroomKVNotificationMessage : RCMessageContent
/// 聊天室操作的类型
@property (nonatomic, assign) RCChatroomKVNotificationType type;
/// 聊天室属性名称
@property (nonatomic, copy) NSString *key;
/// 聊天室属性对应的值
@property (nonatomic, copy) NSString *value;
/*!
初始化聊天室自定义属性通知消息
- Parameter key: 聊天室属性名称
- Parameter value: 聊天室属性对应的值(删除 key 时不用传)
- Parameter extra: 通知消息的自定义字段
- Returns: 聊天室自定义属性通知消息的对象
*/
+ (instancetype)notificationWithType:(RCChatroomKVNotificationType)type
key:(NSString *)key
value:(NSString *_Nullable)value
extra:(NSString *)extra;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,39 @@
//
// RCJoinChatRoomResponse.h
// RongChatRoom
//
// Created by chinaspx on 2023/7/31.
// Copyright © 2023 RongCloud. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface RCJoinChatRoomResponse : NSObject
// 创建时间(毫秒时间戳)
@property (nonatomic, assign) long long createTime;
// 成员数量
@property (nonatomic, assign) NSInteger memberCount;
// 是否全局禁言
@property (nonatomic, assign) BOOL isAllChatRoomBanned;
// 是否当前用户被禁言
@property (nonatomic, assign) BOOL isCurrentUserBanned;
// 当前用户是否在此聊天室被禁言
@property (nonatomic, assign) BOOL isCurrentChatRoomBanned;
// 当前用户是否在此聊天室的白名单中
@property (nonatomic, assign) BOOL isCurrentChatRoomInWhitelist;
// 加入时间(毫秒时间戳)
// - Since: 5.10.2
@property (nonatomic, assign) long long joinTime;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,34 @@
//
// RongChatRoom.h
// RongChatRoom
//
// Created by 张改红 on 2020/8/12.
// Copyright © 2020 张改红。All rights reserved.
//
#import <Foundation/Foundation.h>
//! Project version number for RongChatRoom.
FOUNDATION_EXPORT double RongChatRoomVersionNumber;
//! Project version string for RongChatRoom.
FOUNDATION_EXPORT const unsigned char RongChatRoomVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <RongChatRoom/PublicHeader.h>
#import <RongChatRoom/RCChatRoomClient.h>
#import <RongChatRoom/RCChatRoomProtocol.h>
#import <RongChatRoom/RCChatRoomEnumDefine.h>
#import <RongChatRoom/RCChatRoomInfo.h>
#import <RongChatRoom/RCChatroomKVNotificationMessage.h>
#import <RongChatRoom/RCChatRoomMemberInfo.h>
#import <RongChatRoom/RCChatroomKVChangeInfo.h>
#import <RongChatRoom/RCChatRoomMemberAction.h>
#import <RongChatRoom/RCChatRoomMemberActionModel.h>
#import <RongChatRoom/RCChatRoomSyncEvent.h>
#import <RongChatRoom/RCChatRoomMemberBlockEvent.h>
#import <RongChatRoom/RCChatRoomMemberBanEvent.h>
#import <RongChatRoom/RCJoinChatRoomResponse.h>
#import <RongChatRoom/RCChatRoomClient+Deprecated.h>

View File

@@ -0,0 +1,6 @@
framework module RongChatRoom {
umbrella header "RongChatRoom.h"
export *
module * { export * }
}

View File

@@ -0,0 +1,342 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>files</key>
<dict>
<key>Headers/RCChatRoomClient+Deprecated.h</key>
<data>
59QNtRGVYcW/81lCM3xXg8lcQTw=
</data>
<key>Headers/RCChatRoomClient.h</key>
<data>
4eeeWjTqbKSxJiBH1+lIU8V3abs=
</data>
<key>Headers/RCChatRoomEnumDefine.h</key>
<data>
7ipmzPgcPv3DlG7eu7bVUPncN1I=
</data>
<key>Headers/RCChatRoomInfo.h</key>
<data>
lMBSs6LuI5dj/SCgE5xofYNUNlI=
</data>
<key>Headers/RCChatRoomMemberAction.h</key>
<data>
8zVSvoPUHmvAqJy4g+7g2uPwNlk=
</data>
<key>Headers/RCChatRoomMemberActionModel.h</key>
<data>
Kq7FrXdzQ4axCQ7jHUXBSFuUP2E=
</data>
<key>Headers/RCChatRoomMemberBanEvent.h</key>
<data>
XMGBk5348/rPk+3SCFGlKz3bs5w=
</data>
<key>Headers/RCChatRoomMemberBlockEvent.h</key>
<data>
kl/ISDncrFFOTQnWCEq5ihYM39U=
</data>
<key>Headers/RCChatRoomMemberInfo.h</key>
<data>
MeunTuYWza6J6GNeU9jJ9yAIf6k=
</data>
<key>Headers/RCChatRoomProtocol.h</key>
<data>
dN1Cerf8C6IiNIVHIYvMUXmR8T8=
</data>
<key>Headers/RCChatRoomSyncEvent.h</key>
<data>
BF1X0bQS1U9pTg6JsKiouacegOs=
</data>
<key>Headers/RCChatroomKVChangeInfo.h</key>
<data>
kOgFBsvA95iTFPNOg8KvSZjpAp4=
</data>
<key>Headers/RCChatroomKVNotificationMessage.h</key>
<data>
MqUh4GHtUDgcpdhFkexLTJozHAs=
</data>
<key>Headers/RCJoinChatRoomResponse.h</key>
<data>
7CLt4pIv0TSmLd9G2GotOhGqjYA=
</data>
<key>Headers/RongChatRoom.h</key>
<data>
0Uc+ipnUebWHdxJFY3UNRSaB9FY=
</data>
<key>Info.plist</key>
<data>
BAbVxQ9YcskGmA3oVy8szLM52d4=
</data>
<key>Modules/module.modulemap</key>
<data>
ii0hqjTTGnemjpGIXXGYCaoB99o=
</data>
</dict>
<key>files2</key>
<dict>
<key>Headers/RCChatRoomClient+Deprecated.h</key>
<dict>
<key>hash</key>
<data>
59QNtRGVYcW/81lCM3xXg8lcQTw=
</data>
<key>hash2</key>
<data>
VeUz0KM7anFOMcjqzwc0q8t7r+w5VNR2DvbWM91Uc7o=
</data>
</dict>
<key>Headers/RCChatRoomClient.h</key>
<dict>
<key>hash</key>
<data>
4eeeWjTqbKSxJiBH1+lIU8V3abs=
</data>
<key>hash2</key>
<data>
8JnB3SmbUh/wFyuPvi3b3Gray+VplP/FYAHRWai1uQw=
</data>
</dict>
<key>Headers/RCChatRoomEnumDefine.h</key>
<dict>
<key>hash</key>
<data>
7ipmzPgcPv3DlG7eu7bVUPncN1I=
</data>
<key>hash2</key>
<data>
EzVs+EtKfpdjeis8qZtgtjFNOw1ANDosc411HfRTl6U=
</data>
</dict>
<key>Headers/RCChatRoomInfo.h</key>
<dict>
<key>hash</key>
<data>
lMBSs6LuI5dj/SCgE5xofYNUNlI=
</data>
<key>hash2</key>
<data>
fdFCTcU8VIPr+5LZSLAUEPplOnimj7CTHXwJH9F4pj0=
</data>
</dict>
<key>Headers/RCChatRoomMemberAction.h</key>
<dict>
<key>hash</key>
<data>
8zVSvoPUHmvAqJy4g+7g2uPwNlk=
</data>
<key>hash2</key>
<data>
/mjF0gKIZ4AVh+AfA4XWHAvW7qdkiIE+LH3PRp0pT1M=
</data>
</dict>
<key>Headers/RCChatRoomMemberActionModel.h</key>
<dict>
<key>hash</key>
<data>
Kq7FrXdzQ4axCQ7jHUXBSFuUP2E=
</data>
<key>hash2</key>
<data>
viBnYaS0atwrF8B3MA29jgUN3KrX6yIzHLcnTj+r4Jw=
</data>
</dict>
<key>Headers/RCChatRoomMemberBanEvent.h</key>
<dict>
<key>hash</key>
<data>
XMGBk5348/rPk+3SCFGlKz3bs5w=
</data>
<key>hash2</key>
<data>
uYWFoWtk0fbPUQ/fX158NA8MzZD68zGVXFv3wi9It74=
</data>
</dict>
<key>Headers/RCChatRoomMemberBlockEvent.h</key>
<dict>
<key>hash</key>
<data>
kl/ISDncrFFOTQnWCEq5ihYM39U=
</data>
<key>hash2</key>
<data>
fAw/5mf4KgR9kzfIx4rDQtRJZY16ZJC86j7psjme1ao=
</data>
</dict>
<key>Headers/RCChatRoomMemberInfo.h</key>
<dict>
<key>hash</key>
<data>
MeunTuYWza6J6GNeU9jJ9yAIf6k=
</data>
<key>hash2</key>
<data>
p+ptXasD1EwetwwGO6fkJejatacBm1Likt7kOiwi1c0=
</data>
</dict>
<key>Headers/RCChatRoomProtocol.h</key>
<dict>
<key>hash</key>
<data>
dN1Cerf8C6IiNIVHIYvMUXmR8T8=
</data>
<key>hash2</key>
<data>
FP805Zw9tuCBVyHqvOiuQfvErxdVc93Hzngte47Vjao=
</data>
</dict>
<key>Headers/RCChatRoomSyncEvent.h</key>
<dict>
<key>hash</key>
<data>
BF1X0bQS1U9pTg6JsKiouacegOs=
</data>
<key>hash2</key>
<data>
RpMzkJUbvTp7PdPLzEO0RE9VRJ17F/lJAg8LEhhGroI=
</data>
</dict>
<key>Headers/RCChatroomKVChangeInfo.h</key>
<dict>
<key>hash</key>
<data>
kOgFBsvA95iTFPNOg8KvSZjpAp4=
</data>
<key>hash2</key>
<data>
qUsA04eVGGxQv1OgHrfHwlnT+IGTFas+JD3vziKyhhs=
</data>
</dict>
<key>Headers/RCChatroomKVNotificationMessage.h</key>
<dict>
<key>hash</key>
<data>
MqUh4GHtUDgcpdhFkexLTJozHAs=
</data>
<key>hash2</key>
<data>
24CgnDh2oGGjydwLW/QvEkLFDKKn2ZLsXYMlLWDPcIY=
</data>
</dict>
<key>Headers/RCJoinChatRoomResponse.h</key>
<dict>
<key>hash</key>
<data>
7CLt4pIv0TSmLd9G2GotOhGqjYA=
</data>
<key>hash2</key>
<data>
IvgmaZuARMCpoX+wh1/P+S/IOaXIu69UJUE9J5/3aU4=
</data>
</dict>
<key>Headers/RongChatRoom.h</key>
<dict>
<key>hash</key>
<data>
0Uc+ipnUebWHdxJFY3UNRSaB9FY=
</data>
<key>hash2</key>
<data>
2ckWRnD9M3feRHniqsmr95+ttGnSL0Ugz+MGZDDWHn4=
</data>
</dict>
<key>Modules/module.modulemap</key>
<dict>
<key>hash</key>
<data>
ii0hqjTTGnemjpGIXXGYCaoB99o=
</data>
<key>hash2</key>
<data>
wJMy+vWcBIzIHUTDDqJsgKqxiJI3RYxErBRoeokdByQ=
</data>
</dict>
</dict>
<key>rules</key>
<dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^version.plist$</key>
<true/>
</dict>
<key>rules2</key>
<dict>
<key>.*\.dSYM($|/)</key>
<dict>
<key>weight</key>
<real>11</real>
</dict>
<key>^(.*/)?\.DS_Store$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>2000</real>
</dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^Info\.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^PkgInfo$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^embedded\.provisionprofile$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^version\.plist$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
</dict>
</dict>
</plist>