fix:修改图标和其他
This commit is contained in:
@@ -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>
|
||||
@@ -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
|
||||
@@ -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_SUCCESS(23428)的时候,entries 才会有值(key 为设置失败的 key,value 为该 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_SUCCESS(23428)的时候,entries 才会有值(key 为设置失败的 key,value 为该 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
|
||||
@@ -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 */
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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 */
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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>
|
||||
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
framework module RongChatRoom {
|
||||
umbrella header "RongChatRoom.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
Binary file not shown.
@@ -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
|
||||
@@ -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_SUCCESS(23428)的时候,entries 才会有值(key 为设置失败的 key,value 为该 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_SUCCESS(23428)的时候,entries 才会有值(key 为设置失败的 key,value 为该 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
|
||||
@@ -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 */
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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 */
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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>
|
||||
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
framework module RongChatRoom {
|
||||
umbrella header "RongChatRoom.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
Binary file not shown.
@@ -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>
|
||||
Reference in New Issue
Block a user