RCIM Class Reference
Inherits from | NSObject |
---|---|
Declared in | RCIM.h |
+ sharedRCIM
获取融云界面组件IMKit的核心类单例
+ (instancetype)sharedRCIM
Return Value
融云界面组件IMKit的核心类单例
Discussion
获取融云界面组件IMKit的核心类单例
您可以通过此方法,获取IMKit的单例,访问对象中的属性和方法。
Declared In
RCIM.h
– initWithAppKey:
初始化融云SDK
- (void)initWithAppKey:(NSString *)appKey
Parameters
appKey |
从融云开发者平台创建应用后获取到的App Key |
---|
Discussion
初始化融云SDK
您在使用融云SDK所有功能(包括显示SDK中或者继承于SDK的View)之前,您必须先调用此方法初始化SDK。 在App整个生命周期中,您只需要执行一次初始化。
Warning: 如果您使用IMKit,请使用此方法初始化SDK; 如果您使用IMLib,请使用RCIMClient中的同名方法初始化,而不要使用此方法。
Declared In
RCIM.h
– connectWithToken:dbOpened:success:error:
与融云服务器建立连接
- (void)connectWithToken:(NSString *)token dbOpened:(void ( ^ ) ( RCDBErrorCode code ))dbOpenedBlock success:(void ( ^ ) ( NSString *userId ))successBlock error:(void ( ^ ) ( RCConnectErrorCode errorCode ))errorBlock
Parameters
token |
从您服务器端获取的 token (用户身份令牌) |
---|---|
dbOpenedBlock |
本地消息数据库打开的回调 |
successBlock |
连接建立成功的回调 [ userId: 当前连接成功所用的用户 ID] |
errorBlock |
连接建立失败的回调,触发该回调代表 SDK 无法继续重连 [errorCode: 连接失败的错误码] |
Discussion
与融云服务器建立连接
调用该接口,SDK 会在连接失败之后尝试重连,直到连接成功或者出现 SDK 无法处理的错误(如 token 非法)。 如果您不想一直进行重连,可以使用 connectWithToken:timeLimit:dbOpened:success:error: 接口并设置连接超时时间 timeLimit。
连接成功后,SDK 将接管所有的重连处理。当因为网络原因断线的情况下,SDK 会不停重连直到连接成功为止,不需要您做额外的连接操作。
对于 errorBlock 需要特定关心 tokenIncorrect 的情况: 一是 token 错误,请您检查客户端初始化使用的 AppKey 和您服务器获取 token 使用的 AppKey 是否一致; 二是 token 过期,是因为您在开发者后台设置了 token 过期时间,您需要请求您的服务器重新获取 token 并再次用新的 token 建立连接。 在此种情况下,您需要请求您的服务器重新获取 token 并建立连接,但是注意避免无限循环,以免影响 App 用户体验。
Warning: 如果您使用 IMKit,请使用该方法建立与融云服务器的连接。
此方法的回调并非为原调用线程,您如果需要进行 UI 操作,请注意切换到主线程。
Declared In
RCIM.h
– connectWithToken:timeLimit:dbOpened:success:error:
与融云服务器建立连接
- (void)connectWithToken:(NSString *)token timeLimit:(int)timeLimit dbOpened:(void ( ^ ) ( RCDBErrorCode code ))dbOpenedBlock success:(void ( ^ ) ( NSString *userId ))successBlock error:(void ( ^ ) ( RCConnectErrorCode errorCode ))errorBlock
Parameters
token |
从您服务器端获取的 token (用户身份令牌) |
---|---|
timeLimit |
SDK 连接的超时时间,单位: 秒 timeLimit <= 0,SDK 会一直连接,直到连接成功或者出现 SDK 无法处理的错误(如 token 非法)。 timeLimit > 0,SDK 最多连接 timeLimit 秒,超时时返回 RC_CONNECT_TIMEOUT 错误,并不再重连。 |
dbOpenedBlock |
本地消息数据库打开的回调 |
successBlock |
连接建立成功的回调 [ userId: 当前连接成功所用的用户 ID] |
errorBlock |
连接建立失败的回调,触发该回调代表 SDK 无法继续重连 [errorCode: 连接失败的错误码] |
Discussion
与融云服务器建立连接
调用该接口,SDK 会在 timeLimit 秒内尝试重连,直到出现下面三种情况之一: 第一、连接成功,回调 successBlock(userId)。 第二、超时,回调 errorBlock(RC_CONNECT_TIMEOUT)。 第三、出现 SDK 无法处理的错误,回调 errorBlock(errorCode)(如 token 非法)。
连接成功后,SDK 将接管所有的重连处理。当因为网络原因断线的情况下,SDK 会不停重连直到连接成功为止,不需要您做额外的连接操作。
对于 errorBlock 需要特定关心 tokenIncorrect 的情况: 一是 token 错误,请您检查客户端初始化使用的 AppKey 和您服务器获取 token 使用的 AppKey 是否一致; 二是 token 过期,是因为您在开发者后台设置了 token 过期时间,您需要请求您的服务器重新获取 token 并再次用新的 token 建立连接。 在此种情况下,您需要请求您的服务器重新获取 token 并建立连接,但是注意避免无限循环,以免影响 App 用户体验。
Warning: 如果您使用 IMKit,请使用 RCIM 中的同名方法建立与融云服务器的连接。
此方法的回调并非为原调用线程,您如果需要进行 UI 操作,请注意切换到主线程。
Declared In
RCIM.h
– disconnect:
断开与融云服务器的连接
- (void)disconnect:(BOOL)isReceivePush
Parameters
isReceivePush |
App在断开连接之后,是否还接收远程推送 |
---|
Discussion
断开与融云服务器的连接
因为SDK在前后台切换或者网络出现异常都会自动重连,会保证连接的可靠性。 所以除非您的App逻辑需要登出,否则一般不需要调用此方法进行手动断开。
Warning: 如果您使用IMKit,请使用此方法断开与融云服务器的连接; 如果您使用IMLib,请使用RCIMClient中的同名方法断开与融云服务器的连接,而不要使用此方法。
isReceivePush指断开与融云服务器的连接之后,是否还接收远程推送。 [[RCIM sharedRCIM] disconnect:YES]与[[RCIM sharedRCIM] disconnect]完全一致; [[RCIM sharedRCIM] disconnect:NO]与[[RCIM sharedRCIM] logout]完全一致。 您只需要按照您的需求,使用disconnect:与disconnect以及logout三个接口其中一个即可。
Declared In
RCIM.h
– disconnect
断开与融云服务器的连接,但仍然接收远程推送
- (void)disconnect
Discussion
断开与融云服务器的连接,但仍然接收远程推送
因为SDK在前后台切换或者网络出现异常都会自动重连,会保证连接的可靠性。 所以除非您的App逻辑需要登出,否则一般不需要调用此方法进行手动断开。
Warning: 如果您使用IMKit,请使用此方法断开与融云服务器的连接; 如果您使用IMLib,请使用RCIMClient中的同名方法断开与融云服务器的连接,而不要使用此方法。
[[RCIM sharedRCIM] disconnect:YES]与[[RCIM sharedRCIM] disconnect]完全一致; [[RCIM sharedRCIM] disconnect:NO]与[[RCIM sharedRCIM] logout]完全一致。 您只需要按照您的需求,使用disconnect:与disconnect以及logout三个接口其中一个即可。
Declared In
RCIM.h
– logout
断开与融云服务器的连接,并不再接收远程推送
- (void)logout
Discussion
断开与融云服务器的连接,并不再接收远程推送
因为SDK在前后台切换或者网络出现异常都会自动重连,会保证连接的可靠性。 所以除非您的App逻辑需要登出,否则一般不需要调用此方法进行手动断开。
Warning: 如果您使用IMKit,请使用此方法断开与融云服务器的连接; 如果您使用IMLib,请使用RCIMClient中的同名方法断开与融云服务器的连接,而不要使用此方法。
[[RCIM sharedRCIM] disconnect:YES]与[[RCIM sharedRCIM] disconnect]完全一致; [[RCIM sharedRCIM] disconnect:NO]与[[RCIM sharedRCIM] logout]完全一致。 您只需要按照您的需求,使用disconnect:与disconnect以及logout三个接口其中一个即可。
Declared In
RCIM.h
connectionStatusDelegate
IMKit连接状态的监听器
@property (nonatomic, weak) id<RCIMConnectionStatusDelegate> connectionStatusDelegate
Discussion
IMKit连接状态的监听器
Warning: 如果您使用IMKit,可以设置并实现此Delegate监听消息接收; 如果您使用IMLib,请使用RCIMClient中的RCIMClientReceiveMessageDelegate监听消息接收,而不要使用此方法。
Declared In
RCIM.h
– getConnectionStatus
获取当前SDK的连接状态
- (RCConnectionStatus)getConnectionStatus
Return Value
当前SDK的连接状态
Discussion
获取当前SDK的连接状态
Declared In
RCIM.h
– registerMessageType:
注册自定义的消息类型
- (void)registerMessageType:(Class)messageClass
Parameters
messageClass |
自定义消息的类,该自定义消息需要继承于RCMessageContent |
---|
Discussion
注册自定义的消息类型
如果您需要自定义消息,必须调用此方法注册该自定义消息的消息类型,否则SDK将无法识别和解析该类型消息。
Warning: 如果您使用IMKit,请使用此方法注册自定义的消息类型; 如果您使用IMLib,请使用RCIMClient中的同名方法注册自定义的消息类型,而不要使用此方法。
Declared In
RCIM.h
– sendMessage:targetId:content:pushContent:pushData:success:error:
发送消息(除图片消息、文件消息外的所有消息),会自动更新UI
- (RCMessage *)sendMessage:(RCConversationType)conversationType targetId:(NSString *)targetId content:(RCMessageContent *)content pushContent:(NSString *)pushContent pushData:(NSString *)pushData success:(void ( ^ ) ( long messageId ))successBlock error:(void ( ^ ) ( RCErrorCode nErrorCode , long messageId ))errorBlock
Parameters
conversationType |
发送消息的会话类型 |
---|---|
targetId |
发送消息的目标会话ID |
content |
消息的内容 |
pushContent |
接收方离线时需要显示的远程推送内容 |
pushData |
接收方离线时需要在远程推送中携带的非显示数据 |
successBlock |
消息发送成功的回调 [messageId:消息的ID] |
errorBlock |
消息发送失败的回调 [nErrorCode:发送失败的错误码, messageId:消息的ID] |
Return Value
发送的消息实体
Discussion
发送消息(除图片消息、文件消息外的所有消息),会自动更新UI
当接收方离线并允许远程推送时,会收到远程推送。 远程推送中包含两部分内容,一是pushContent,用于显示;二是pushData,用于携带不显示的数据。
SDK内置的消息类型,如果您将pushContent和pushData置为nil,会使用默认的推送格式进行远程推送。 自定义类型的消息,需要您自己设置pushContent和pushData来定义推送内容,否则将不会进行远程推送。
Warning: 如果您使用IMKit,使用此方法发送消息SDK会自动更新UI; 如果您使用IMLib,请使用RCIMClient中的同名方法发送消息,不会自动更新UI。
Declared In
RCIM.h
– sendMessage:pushContent:pushData:successBlock:errorBlock:
发送消息(除图片消息、文件消息外的所有消息),会自动更新UI
- (RCMessage *)sendMessage:(RCMessage *)message pushContent:(NSString *)pushContent pushData:(NSString *)pushData successBlock:(void ( ^ ) ( RCMessage *successMessage ))successBlock errorBlock:(void ( ^ ) ( RCErrorCode nErrorCode , RCMessage *errorMessage ))errorBlock
Parameters
message |
将要发送的消息实体(需要保证 message 中的 conversationType,targetId,messageContent 是有效值) |
---|---|
pushContent |
接收方离线时需要显示的远程推送内容 |
pushData |
接收方离线时需要在远程推送中携带的非显示数据 |
successBlock |
消息发送成功的回调 [successMessage: 消息实体] |
errorBlock |
消息发送失败的回调 [nErrorCode: 发送失败的错误码, errorMessage:消息实体] |
Return Value
发送的消息实体
Discussion
发送消息(除图片消息、文件消息外的所有消息),会自动更新UI
当接收方离线并允许远程推送时,会收到远程推送。 远程推送中包含两部分内容,一是pushContent,用于显示;二是pushData,用于携带不显示的数据。
SDK内置的消息类型,如果您将pushContent和pushData置为nil,会使用默认的推送格式进行远程推送。 自定义类型的消息,需要您自己设置pushContent和pushData来定义推送内容,否则将不会进行远程推送。
Warning: 如果您使用IMKit,使用此方法发送消息SDK会自动更新UI; 如果您使用IMLib,请使用RCIMClient中的同名方法发送消息,不会自动更新UI。
@remarks 消息操作
Declared In
RCIM.h
– sendMediaMessage:targetId:content:pushContent:pushData:progress:success:error:cancel:
发送媒体文件消息,会自动更新UI
- (RCMessage *)sendMediaMessage:(RCConversationType)conversationType targetId:(NSString *)targetId content:(RCMessageContent *)content pushContent:(NSString *)pushContent pushData:(NSString *)pushData progress:(void ( ^ ) ( int progress , long messageId ))progressBlock success:(void ( ^ ) ( long messageId ))successBlock error:(void ( ^ ) ( RCErrorCode errorCode , long messageId ))errorBlock cancel:(void ( ^ ) ( long messageId ))cancelBlock
Parameters
conversationType |
发送消息的会话类型 |
---|---|
targetId |
发送消息的目标会话ID |
content |
消息的内容 |
pushContent |
接收方离线时需要显示的远程推送内容 |
pushData |
接收方离线时需要在远程推送中携带的非显示数据 |
progressBlock |
消息发送进度更新的回调 [progress:当前的发送进度, 0 <= progress <= 100, messageId:消息的ID] |
successBlock |
消息发送成功的回调 [messageId:消息的ID] |
errorBlock |
消息发送失败的回调 [errorCode:发送失败的错误码, messageId:消息的ID] |
cancelBlock |
用户取消了消息发送的回调 [messageId:消息的ID] |
Return Value
发送的消息实体
Discussion
发送媒体文件消息,会自动更新UI
当接收方离线并允许远程推送时,会收到远程推送。 远程推送中包含两部分内容,一是pushContent,用于显示;二是pushData,用于携带不显示的数据。
SDK内置的消息类型,如果您将pushContent和pushData置为nil,会使用默认的推送格式进行远程推送。 自定义类型的消息,需要您自己设置pushContent和pushData来定义推送内容,否则将不会进行远程推送。
Warning: 如果您使用IMKit,使用此方法发送媒体文件消息SDK会自动更新UI; 如果您使用IMLib,请使用RCIMClient中的同名方法发送媒体文件消息,不会自动更新UI。
Declared In
RCIM.h
– sendMediaMessage:pushContent:pushData:progress:successBlock:errorBlock:cancel:
发送媒体文件消息,会自动更新UI
- (RCMessage *)sendMediaMessage:(RCMessage *)message pushContent:(NSString *)pushContent pushData:(NSString *)pushData progress:(void ( ^ ) ( int progress , RCMessage *progressMessage ))progressBlock successBlock:(void ( ^ ) ( RCMessage *successMessage ))successBlock errorBlock:(void ( ^ ) ( RCErrorCode nErrorCode , RCMessage *errorMessage ))errorBlock cancel:(void ( ^ ) ( RCMessage *cancelMessage ))cancelBlock
Parameters
message |
将要发送的消息实体(需要保证 message 中的 conversationType,targetId,messageContent 是有效值) |
---|---|
pushContent |
接收方离线时需要显示的远程推送内容 |
pushData |
接收方离线时需要在远程推送中携带的非显示数据 |
progressBlock |
消息发送进度更新的回调 [progress:当前的发送进度, 0 <= progress <= 100, progressMessage:消息实体] |
successBlock |
消息发送成功的回调 [successMessage:消息实体] |
errorBlock |
消息发送失败的回调 [nErrorCode:发送失败的错误码, errorMessage:消息实体] |
cancelBlock |
用户取消了消息发送的回调 [cancelMessage:消息实体] |
Return Value
发送的消息实体
Discussion
发送媒体文件消息,会自动更新UI
当接收方离线并允许远程推送时,会收到远程推送。 远程推送中包含两部分内容,一是pushContent,用于显示;二是pushData,用于携带不显示的数据。
SDK内置的消息类型,如果您将pushContent和pushData置为nil,会使用默认的推送格式进行远程推送。 自定义类型的消息,需要您自己设置pushContent和pushData来定义推送内容,否则将不会进行远程推送。
Warning: 如果您使用IMKit,使用此方法发送媒体文件消息SDK会自动更新UI; 如果您使用IMLib,请使用RCIMClient中的同名方法发送媒体文件消息,不会自动更新UI。
Declared In
RCIM.h
– cancelSendMediaMessage:
取消发送中的媒体信息
- (BOOL)cancelSendMediaMessage:(long)messageId
Parameters
messageId |
媒体消息的messageId |
---|
Return Value
YES表示取消成功,NO表示取消失败,即已经发送成功或者消息不存在。
Discussion
取消发送中的媒体信息
Declared In
RCIM.h
– downloadMediaMessage:progress:success:error:cancel:
下载消息中的媒体文件
- (void)downloadMediaMessage:(long)messageId progress:(void ( ^ ) ( int progress ))progressBlock success:(void ( ^ ) ( NSString *mediaPath ))successBlock error:(void ( ^ ) ( RCErrorCode errorCode ))errorBlock cancel:(void ( ^ ) ( void ))cancelBlock
Parameters
messageId |
消息ID |
---|---|
progressBlock |
下载进度更新的回调 [progress:当前的发送进度, 0 <= progress <= 100] |
successBlock |
下载成功的回调 [mediaPath:下载完成后文件在本地的存储路径] |
errorBlock |
下载失败的回调 [errorCode:下载失败的错误码] |
cancelBlock |
下载取消的回调 |
Discussion
下载消息中的媒体文件
媒体消息仅限于图片消息和文件消息。
Declared In
RCIM.h
– cancelDownloadMediaMessage:
取消下载中的媒体信息
- (BOOL)cancelDownloadMediaMessage:(long)messageId
Parameters
messageId |
媒体消息的messageId |
---|
Return Value
YES表示取消成功,NO表示取消失败,即已经下载完成或者消息不存在。
Discussion
取消下载中的媒体信息
Declared In
RCIM.h
– sendDirectionalMessage:targetId:toUserIdList:content:pushContent:pushData:success:error:
发送定向消息,会自动更新UI
- (RCMessage *)sendDirectionalMessage:(RCConversationType)conversationType targetId:(NSString *)targetId toUserIdList:(NSArray *)userIdList content:(RCMessageContent *)content pushContent:(NSString *)pushContent pushData:(NSString *)pushData success:(void ( ^ ) ( long messageId ))successBlock error:(void ( ^ ) ( RCErrorCode nErrorCode , long messageId ))errorBlock
Parameters
conversationType |
发送消息的会话类型 |
---|---|
targetId |
发送消息的目标会话ID |
userIdList |
发送给的用户ID列表 |
content |
消息的内容 |
pushContent |
接收方离线时需要显示的远程推送内容 |
pushData |
接收方离线时需要在远程推送中携带的非显示数据 |
successBlock |
消息发送成功的回调 [messageId:消息的ID] |
errorBlock |
消息发送失败的回调 [errorCode:发送失败的错误码, messageId:消息的ID] |
Return Value
发送的消息实体
Discussion
发送定向消息,会自动更新UI
此方法用于在群组和讨论组中发送消息给其中的部分用户,其它用户不会收到这条消息。 如果您使用IMKit,使用此方法发送定向消息SDK会自动更新UI; 如果您使用IMLib,请使用RCIMClient中的同名方法发送定向消息,不会自动更新UI。
Warning: 此方法目前仅支持群组和讨论组。
Declared In
RCIM.h
receiveMessageDelegate
IMKit消息接收的监听器
@property (nonatomic, weak) id<RCIMReceiveMessageDelegate> receiveMessageDelegate
Discussion
IMKit消息接收的监听器
Warning: 如果您使用IMKit,可以设置并实现此Delegate监听消息接收; 如果您使用IMLib,请使用RCIMClient中的RCIMClientReceiveMessageDelegate监听消息接收,而不要使用此方法。
Declared In
RCIM.h
disableMessageNotificaiton
是否关闭所有的本地通知,默认值是NO
@property (nonatomic, assign) BOOL disableMessageNotificaiton
Discussion
是否关闭所有的本地通知,默认值是NO
当App处于后台时,默认会弹出本地通知提示,您可以通过将此属性设置为YES,关闭所有的本地通知。
Declared In
RCIM.h
disableMessageAlertSound
是否关闭所有的前台消息提示音,默认值是NO
@property (nonatomic, assign) BOOL disableMessageAlertSound
Discussion
是否关闭所有的前台消息提示音,默认值是NO
当App处于前台时,默认会播放消息提示音,您可以通过将此属性设置为YES,关闭所有的前台消息提示音。
Declared In
RCIM.h
enableTypingStatus
是否开启发送输入状态,默认值是 YES,开启之后在输入消息的时候对方可以看到正在输入的提示(目前只支持单聊)
@property (nonatomic, assign) BOOL enableTypingStatus
Discussion
是否开启发送输入状态,默认值是 YES,开启之后在输入消息的时候对方可以看到正在输入的提示(目前只支持单聊)
Declared In
RCIM.h
enabledReadReceiptConversationTypeList
开启已读回执功能的会话类型,默认为 单聊、群聊和讨论组
@property (nonatomic, copy) NSArray *enabledReadReceiptConversationTypeList
Discussion
开启已读回执功能的会话类型,默认为 单聊、群聊和讨论组
这些会话类型的消息在会话页面显示了之后会发送已读回执。目前仅支持单聊、群聊和讨论组。
OC 需转成 NSNumber 传入(例如 @[ @(ConversationType_PRIVATE) ]), Swift 需获取到 rawValue 传入(例如 [ RCConversationType.ConversationType_PRIVATE.rawValue ])。
Declared In
RCIM.h
maxReadRequestDuration
设置群组、讨论组发送已读回执请求的有效时间,单位是秒,默认值是 120s。
@property (nonatomic, assign) NSUInteger maxReadRequestDuration
Discussion
设置群组、讨论组发送已读回执请求的有效时间,单位是秒,默认值是 120s。
用户在群组或讨论组中发送消息,退出会话页面再次进入时,如果超过设置的时间,则不再显示已读回执的按钮。
Declared In
RCIM.h
enableSyncReadStatus
是否开启多端同步未读状态的功能,默认值是 YES
@property (nonatomic, assign) BOOL enableSyncReadStatus
Discussion
是否开启多端同步未读状态的功能,默认值是 YES
开启之后,用户在其他端上阅读过的消息,当前客户端会清掉该消息的未读数。目前仅支持单聊、群聊、讨论组。
Declared In
RCIM.h
enableMessageMentioned
是否开启消息@提醒功能(只支持群聊和讨论组, App需要实现群成员数据源groupMemberDataSource),默认值是 YES。
@property (nonatomic, assign) BOOL enableMessageMentioned
Discussion
是否开启消息@提醒功能(只支持群聊和讨论组, App需要实现群成员数据源groupMemberDataSource),默认值是 YES。
Declared In
RCIM.h
enableMessageRecall
是否开启消息撤回功能,默认值是 YES。
@property (nonatomic, assign) BOOL enableMessageRecall
Discussion
是否开启消息撤回功能,默认值是 YES。
Declared In
RCIM.h
maxRecallDuration
消息可撤回的最大时间,单位是秒,默认值是120s。
@property (nonatomic, assign) NSUInteger maxRecallDuration
Discussion
消息可撤回的最大时间,单位是秒,默认值是120s。
Declared In
RCIM.h
showUnkownMessage
是否在会话页面和会话列表界面显示未注册的消息类型,默认值是 YES
@property (nonatomic, assign) BOOL showUnkownMessage
Discussion
是否在会话页面和会话列表界面显示未注册的消息类型,默认值是 YES
App不断迭代开发,可能会在以后的新版本中不断增加某些自定义类型的消息,但是已经发布的老版本无法识别此类消息。 针对这种情况,可以预先定义好未注册的消息的显示,以提升用户体验(如提示当前版本不支持,引导用户升级版本等)
未注册的消息,可以通过RCConversationViewController中的rcUnkownConversationCollectionView:cellForItemAtIndexPath:和rcUnkownConversationCollectionView:layout:sizeForItemAtIndexPath:方法定制在会话页面的显示。 未注册的消息,可以通过修改unknown_message_cell_tip字符串资源定制在会话列表界面的显示。
Declared In
RCIM.h
)
未注册的消息类型是否显示本地通知,默认值是NO
@property (nonatomic, assign) BOOL showUnkownMessageNotificaiton __deprecated_msg ( "已废弃,请勿使用" )
Discussion
未注册的消息类型是否显示本地通知,默认值是NO
App不断迭代开发,可能会在以后的新版本中不断增加某些自定义类型的消息,但是已经发布的老版本无法识别此类消息。 针对这种情况,可以预先定义好未注册的消息的显示,以提升用户体验(如提示当前版本不支持,引导用户升级版本等)
未注册的消息,可以通过修改unknown_message_notification_tip字符串资源定制本地通知的显示。
Warning: 已废弃,请勿使用。
Declared In
RCIM.h
maxVoiceDuration
语音消息的最大长度
@property (nonatomic, assign) NSUInteger maxVoiceDuration
Discussion
语音消息的最大长度
默认值是60s,有效值为不小于5秒,不大于60秒
Declared In
RCIM.h
isExclusiveSoundPlayer
APP是否独占音频
@property (nonatomic, assign) BOOL isExclusiveSoundPlayer
Discussion
APP是否独占音频
默认是NO,录音结束之后会调用AVAudioSession 的 setActive:NO , 恢复其他后台APP播放的声音,如果设置成YES,不会调用 setActive:NO,这样不会中断当前APP播放的声音 (如果当前APP 正在播放音频,这时候如果调用SDK 的录音,可以设置这里为YES)
Declared In
RCIM.h
isMediaSelectorContainVideo
选择媒体资源时,是否包含视频文件,默认值是NO
@property (nonatomic, assign) BOOL isMediaSelectorContainVideo
Discussion
选择媒体资源时,是否包含视频文件,默认值是NO
默认是不包含
Declared In
RCIM.h
– createDiscussion:userIdList:success:error:
创建讨论组
- (void)createDiscussion:(NSString *)name userIdList:(NSArray *)userIdList success:(void ( ^ ) ( RCDiscussion *discussion ))successBlock error:(void ( ^ ) ( RCErrorCode status ))errorBlock
Parameters
name |
讨论组名称 |
---|---|
userIdList |
用户ID的列表 |
successBlock |
创建讨论组成功的回调 [discussion:创建成功返回的讨论组对象] |
errorBlock |
创建讨论组失败的回调 [status:创建失败的错误码] |
Discussion
创建讨论组
Declared In
RCIM.h
– addMemberToDiscussion:userIdList:success:error:
讨论组加人,将用户加入讨论组
- (void)addMemberToDiscussion:(NSString *)discussionId userIdList:(NSArray *)userIdList success:(void ( ^ ) ( RCDiscussion *discussion ))successBlock error:(void ( ^ ) ( RCErrorCode status ))errorBlock
Parameters
discussionId |
讨论组ID |
---|---|
userIdList |
需要加入的用户ID列表 |
successBlock |
讨论组加人成功的回调 [discussion:讨论组加人成功返回的讨论组对象] |
errorBlock |
讨论组加人失败的回调 [status:讨论组加人失败的错误码] |
Discussion
讨论组加人,将用户加入讨论组
设置的讨论组名称长度不能超过40个字符,否则将会截断为前40个字符。
Declared In
RCIM.h
– removeMemberFromDiscussion:userId:success:error:
讨论组踢人,将用户移出讨论组
- (void)removeMemberFromDiscussion:(NSString *)discussionId userId:(NSString *)userId success:(void ( ^ ) ( RCDiscussion *discussion ))successBlock error:(void ( ^ ) ( RCErrorCode status ))errorBlock
Parameters
discussionId |
讨论组ID |
---|---|
userId |
需要移出的用户ID |
successBlock |
讨论组踢人成功的回调 [discussion:讨论组踢人成功返回的讨论组对象] |
errorBlock |
讨论组踢人失败的回调 [status:讨论组踢人失败的错误码] |
Discussion
讨论组踢人,将用户移出讨论组
如果当前登录用户不是此讨论组的创建者并且此讨论组没有开放加人权限,则会返回错误。
Warning: 不能使用此接口将自己移除,否则会返回错误。 如果您需要退出该讨论组,可以使用-quitDiscussion:success:error:方法。
Declared In
RCIM.h
– quitDiscussion:success:error:
退出当前讨论组
- (void)quitDiscussion:(NSString *)discussionId success:(void ( ^ ) ( RCDiscussion *discussion ))successBlock error:(void ( ^ ) ( RCErrorCode status ))errorBlock
Parameters
discussionId |
讨论组ID |
---|---|
successBlock |
退出成功的回调 [discussion:退出成功返回的讨论组对象] |
errorBlock |
退出失败的回调 [status:退出失败的错误码] |
Discussion
退出当前讨论组
Declared In
RCIM.h
– getDiscussion:success:error:
获取讨论组的信息
- (void)getDiscussion:(NSString *)discussionId success:(void ( ^ ) ( RCDiscussion *discussion ))successBlock error:(void ( ^ ) ( RCErrorCode status ))errorBlock
Parameters
discussionId |
需要获取信息的讨论组ID |
---|---|
successBlock |
获取讨论组信息成功的回调 [discussion:获取的讨论组信息] |
errorBlock |
获取讨论组信息失败的回调 [status:获取讨论组信息失败的错误码] |
Discussion
获取讨论组的信息
Declared In
RCIM.h
– setDiscussionName:name:success:error:
设置讨论组名称
- (void)setDiscussionName:(NSString *)discussionId name:(NSString *)discussionName success:(void ( ^ ) ( void ))successBlock error:(void ( ^ ) ( RCErrorCode status ))errorBlock
Parameters
discussionId |
需要设置的讨论组ID |
---|---|
discussionName |
需要设置的讨论组名称,discussionName长度<=40 |
successBlock |
设置成功的回调 |
errorBlock |
设置失败的回调 [status:设置失败的错误码] |
Discussion
设置讨论组名称
设置的讨论组名称长度不能超过40个字符,否则将会截断为前40个字符。
Declared In
RCIM.h
– setDiscussionInviteStatus:isOpen:success:error:
设置讨论组是否开放加人权限
- (void)setDiscussionInviteStatus:(NSString *)discussionId isOpen:(BOOL)isOpen success:(void ( ^ ) ( void ))successBlock error:(void ( ^ ) ( RCErrorCode status ))errorBlock
Parameters
discussionId |
论组ID |
---|---|
isOpen |
是否开放加人权限 |
successBlock |
设置成功的回调 |
errorBlock |
设置失败的回调[status:设置失败的错误码] |
Discussion
设置讨论组是否开放加人权限
讨论组默认开放加人权限,即所有成员都可以加人。 如果关闭加人权限之后,只有讨论组的创建者有加人权限。
Declared In
RCIM.h
currentUserInfo
当前登录的用户的用户信息
@property (nonatomic, strong) RCUserInfo *currentUserInfo
Discussion
当前登录的用户的用户信息
与融云服务器建立连接之后,应该设置当前用户的用户信息,用于SDK显示和发送。
Warning: 如果传入的用户信息中的用户ID与当前登录的用户ID不匹配,则将会忽略。
Declared In
RCIM.h
enablePersistentUserInfoCache
是否将用户信息和群组信息在本地持久化存储,默认值为NO
@property (nonatomic, assign) BOOL enablePersistentUserInfoCache
Discussion
是否将用户信息和群组信息在本地持久化存储,默认值为NO
@discussion 如果设置为NO,则SDK在需要显示用户信息时,会调用用户信息提供者获取用户信息并缓存到Cache,此Cache在App生命周期结束时会被移除,下次启动时会再次通过用户信息提供者获取信息。 如果设置为YES,则会将获取到的用户信息持久化存储在本地,App下次启动时Cache会仍然有效。
Declared In
RCIM.h
enableMessageAttachUserInfo
是否在发送的所有消息中携带当前登录的用户信息,默认值为NO
@property (nonatomic, assign) BOOL enableMessageAttachUserInfo
Discussion
是否在发送的所有消息中携带当前登录的用户信息,默认值为NO
如果设置为YES,则会在每一条发送的消息中携带当前登录用户的用户信息。 收到一条携带了用户信息的消息,SDK会将其信息加入用户信息的cache中并显示; 若消息中不携带用户信息,则仍然会通过用户信息提供者获取用户信息进行显示。
Warning: 需要先设置当前登录用户的用户信息,参考RCIM的currentUserInfo。
Declared In
RCIM.h
userInfoDataSource
用户信息提供者
@property (nonatomic, weak) id<RCIMUserInfoDataSource> userInfoDataSource
Discussion
用户信息提供者
SDK需要通过您实现的用户信息提供者,获取用户信息并显示。
Declared In
RCIM.h
– refreshUserInfoCache:withUserId:
更新SDK中的用户信息缓存
- (void)refreshUserInfoCache:(RCUserInfo *)userInfo withUserId:(NSString *)userId
Parameters
userInfo |
需要更新的用户信息 |
---|---|
userId |
需要更新的用户ID |
Discussion
更新SDK中的用户信息缓存
使用此方法,可以更新SDK缓存的用户信息。 但是处于性能和使用场景权衡,SDK不会在当前View立即自动刷新(会在切换到其他View的时候再刷新该用户的显示信息)。 如果您想立即刷新,您可以在会话列表或者会话页面reload强制刷新。
Declared In
RCIM.h
– getUserInfoCache:
获取SDK中缓存的用户信息
- (RCUserInfo *)getUserInfoCache:(NSString *)userId
Parameters
userId |
用户ID |
---|
Return Value
SDK中缓存的用户信息
Discussion
获取SDK中缓存的用户信息
Declared In
RCIM.h
– clearUserInfoCache
清空SDK中所有的用户信息缓存
- (void)clearUserInfoCache
Discussion
清空SDK中所有的用户信息缓存
使用此方法,会清空SDK中所有的用户信息缓存。 但是处于性能和使用场景权衡,SDK不会在当前View立即自动刷新(会在切换到其他View的时候再刷新所显示的用户信息)。 如果您想立即刷新,您可以在会话列表或者会话页面reload强制刷新。
Declared In
RCIM.h
groupInfoDataSource
群组信息提供者
@property (nonatomic, weak) id<RCIMGroupInfoDataSource> groupInfoDataSource
Discussion
群组信息提供者
SDK需要通过您实现的群组信息提供者,获取群组信息并显示。
Declared In
RCIM.h
– refreshGroupInfoCache:withGroupId:
更新SDK中的群组信息缓存
- (void)refreshGroupInfoCache:(RCGroup *)groupInfo withGroupId:(NSString *)groupId
Parameters
groupInfo |
需要更新的群组信息 |
---|---|
groupId |
需要更新的群组ID |
Discussion
更新SDK中的群组信息缓存
使用此方法,可以更新SDK缓存的群组信息。 但是处于性能和使用场景权衡,SDK不会在当前View立即自动刷新(会在切换到其他View的时候再刷新该群组的显示信息)。 如果您想立即刷新,您可以在会话列表或者会话页面reload强制刷新。
Declared In
RCIM.h
– getGroupInfoCache:
获取SDK中缓存的群组信息
- (RCGroup *)getGroupInfoCache:(NSString *)groupId
Parameters
groupId |
群组ID |
---|
Return Value
SDK中缓存的群组信息
Discussion
获取SDK中缓存的群组信息
Declared In
RCIM.h
– clearGroupInfoCache
清空SDK中所有的群组信息缓存
- (void)clearGroupInfoCache
Discussion
清空SDK中所有的群组信息缓存
使用此方法,会清空SDK中所有的群组信息缓存。 但是处于性能和使用场景权衡,SDK不会在当前View立即自动刷新(会在切换到其他View的时候再刷新所显示的群组信息)。 如果您想立即刷新,您可以在会话列表或者会话页面reload强制刷新。
Declared In
RCIM.h
groupUserInfoDataSource
群名片信息提供者
@property (nonatomic, weak) id<RCIMGroupUserInfoDataSource> groupUserInfoDataSource
Discussion
群名片信息提供者
如果您使用了群名片功能,SDK需要通过您实现的群名片信息提供者,获取用户在群组中的名片信息并显示。
Declared In
RCIM.h
– getGroupUserInfoCache:withGroupId:
获取SDK中缓存的群名片信息
- (RCUserInfo *)getGroupUserInfoCache:(NSString *)userId withGroupId:(NSString *)groupId
Parameters
userId |
用户ID |
---|---|
groupId |
群组ID |
Return Value
群名片信息
Discussion
获取SDK中缓存的群名片信息
Declared In
RCIM.h
– refreshGroupUserInfoCache:withUserId:withGroupId:
更新SDK中的群名片信息缓存
- (void)refreshGroupUserInfoCache:(RCUserInfo *)userInfo withUserId:(NSString *)userId withGroupId:(NSString *)groupId
Parameters
userInfo |
需要更新的用户信息 |
---|---|
userId |
需要更新的用户ID |
groupId |
需要更新群名片信息的群组ID |
Discussion
更新SDK中的群名片信息缓存
使用此方法,可以更新SDK缓存的群名片信息。 但是处于性能和使用场景权衡,SDK不会在当前View立即自动刷新(会在切换到其他View的时候再刷新该群名片的显示信息)。 如果您想立即刷新,您可以在会话列表或者会话页面reload强制刷新。
Declared In
RCIM.h
– clearGroupUserInfoCache
清空SDK中所有的群名片信息缓存
- (void)clearGroupUserInfoCache
Discussion
清空SDK中所有的群名片信息缓存
使用此方法,会清空SDK中所有的群名片信息缓存。 但是处于性能和使用场景权衡,SDK不会在当前View立即自动刷新(会在切换到其他View的时候再刷新所显示的群名片信息)。 如果您想立即刷新,您可以在会话列表或者会话页面reload强制刷新。
Declared In
RCIM.h
groupMemberDataSource
群成员信息提供者
@property (nonatomic, weak) id<RCIMGroupMemberDataSource> groupMemberDataSource
Discussion
群成员信息提供者
如果您使用了@功能,SDK需要通过您实现的群用户成员提供者,获取群组中的用户列表。
Declared In
RCIM.h
automaticDownloadHQVoiceMsgEnable
在线时是否自动下载高质量语音消息
@property (nonatomic, assign) BOOL automaticDownloadHQVoiceMsgEnable
Discussion
在线时是否自动下载高质量语音消息
默认为 YES
Declared In
RCIM.h
publicServiceInfoDataSource
公众号信息提供者
@property (nonatomic, weak) id<RCIMPublicServiceProfileDataSource> publicServiceInfoDataSource
Discussion
公众号信息提供者
SDK需要通过您实现公众号信息提供者,获取公众号信息并显示。
Declared In
RCIM.h
globalNavigationBarTintColor
SDK中全局的导航按钮字体颜色
@property (nonatomic, strong) UIColor *globalNavigationBarTintColor
Discussion
SDK中全局的导航按钮字体颜色
默认值为[UIColor whiteColor]
Declared In
RCIM.h
globalConversationAvatarStyle
SDK会话列表界面中显示的头像形状,矩形或者圆形
@property (nonatomic) RCUserAvatarStyle globalConversationAvatarStyle
Discussion
SDK会话列表界面中显示的头像形状,矩形或者圆形
默认值为矩形,即RC_USER_AVATAR_RECTANGLE
Declared In
RCIM.h
globalConversationPortraitSize
SDK会话列表界面中显示的头像大小,高度必须大于或者等于36
@property (nonatomic) CGSize globalConversationPortraitSize
Discussion
SDK会话列表界面中显示的头像大小,高度必须大于或者等于36
默认值为46*46
Declared In
RCIM.h
globalMessageAvatarStyle
SDK会话页面中显示的头像形状,矩形或者圆形
@property (nonatomic) RCUserAvatarStyle globalMessageAvatarStyle
Discussion
SDK会话页面中显示的头像形状,矩形或者圆形
默认值为矩形,即RC_USER_AVATAR_RECTANGLE
Declared In
RCIM.h
globalMessagePortraitSize
SDK会话页面中显示的头像大小
@property (nonatomic) CGSize globalMessagePortraitSize
Discussion
SDK会话页面中显示的头像大小
默认值为40*40
Declared In
RCIM.h
portraitImageViewCornerRadius
SDK会话列表界面和会话页面的头像的圆角曲率半径
@property (nonatomic) CGFloat portraitImageViewCornerRadius
Discussion
SDK会话列表界面和会话页面的头像的圆角曲率半径
默认值为4,只有当头像形状设置为矩形时才会生效。 参考RCIM的globalConversationAvatarStyle和globalMessageAvatarStyle。
Declared In
RCIM.h
embeddedWebViewPreferred
点击Cell中的URL时,优先使用WebView还是SFSafariViewController打开。
@property (nonatomic, assign) BOOL embeddedWebViewPreferred
Discussion
点击Cell中的URL时,优先使用WebView还是SFSafariViewController打开。
默认为NO。 如果设置为YES,将使用WebView打开URL链接,则您需要在App的Info.plist的NSAppTransportSecurity中增加NSAllowsArbitraryLoadsInWebContent和NSAllowsArbitraryLoads字段,并在苹果审核的时候提供额外的说明。 如果设置为NO,将优先使用SFSafariViewController,在iOS 8及之前的系统中使用WebView,在审核的时候不需要提供额外说明。 更多内容可以参考:https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW55
Declared In
RCIM.h
– setScheme:forExtensionModule:
设置Extension Module的URL scheme。
- (void)setScheme:(NSString *)scheme forExtensionModule:(NSString *)moduleName
Parameters
scheme |
URL scheme |
---|---|
moduleName |
Extension module name @discussion 有些第三方扩展需要打开其他应用(比如使用支付宝进行支付),然后等待返回结果。因此首先要为第三方扩展设置一个URL scheme并加入到info.plist中,然后再告诉该扩展模块scheme。 |
Discussion
设置Extension Module的URL scheme。
Declared In
RCIM.h
– openExtensionModuleUrl:
第三方扩展处理openUrl
- (BOOL)openExtensionModuleUrl:(NSURL *)url
Parameters
url |
url |
---|
Return Value
YES处理,NO未处理。
Discussion
第三方扩展处理openUrl
Declared In
RCIM.h
GIFMsgAutoDownloadSize
GIF 消息自动下载的大小 size, 单位 KB
@property (nonatomic, assign) NSInteger GIFMsgAutoDownloadSize
Discussion
GIF 消息自动下载的大小 size, 单位 KB
Declared In
RCIM.h
enableSendCombineMessage
是否开启合并转发功能,默认值是NO,开启之后可以合并转发消息(目前只支持单聊和群聊)
@property (nonatomic, assign) BOOL enableSendCombineMessage
Discussion
是否开启合并转发功能,默认值是NO,开启之后可以合并转发消息(目前只支持单聊和群聊)
Declared In
RCIM.h
enableBurnMessage
是否开启阅后即焚功能,默认值是NO,开启之后可以在聊天页面扩展板中使用阅后即焚功能(目前只支持单聊)
@property (nonatomic, assign) BOOL enableBurnMessage
Discussion
是否开启阅后即焚功能,默认值是NO,开启之后可以在聊天页面扩展板中使用阅后即焚功能(目前只支持单聊)
目前 IMKit 仅支持文本、语音、图片、小视频消息。
Declared In
RCIM.h
enableDarkMode
是否支持暗黑模式,默认值是NO,开启之后 UI 支持暗黑模式,可以跟随系统切换
@property (nonatomic, assign) BOOL enableDarkMode
Discussion
是否支持暗黑模式,默认值是NO,开启之后 UI 支持暗黑模式,可以跟随系统切换
Declared In
RCIM.h
reeditDuration
消息撤回后可重新编辑的时间,单位是秒,默认值是 300s。
@property (nonatomic, assign) NSUInteger reeditDuration
Discussion
消息撤回后可重新编辑的时间,单位是秒,默认值是 300s。
目前消息撤回后重新编辑仅为本地操作,卸载重装或者更换设备不会同步。
Declared In
RCIM.h
enableMessageReference
是否支持消息引用功能,默认值是YES ,聊天页面长按消息支持引用(目前仅支持文本消息、文件消息、图文消息、图片消息、引用消息的引用)
@property (nonatomic, assign) BOOL enableMessageReference
Discussion
是否支持消息引用功能,默认值是YES ,聊天页面长按消息支持引用(目前仅支持文本消息、文件消息、图文消息、图片消息、引用消息的引用)
Declared In
RCIM.h
sightRecordMaxDuration
小视频的最长录制时间,单位是秒,默认值是 10s。
@property (nonatomic, assign) NSUInteger sightRecordMaxDuration
Discussion
小视频的最长录制时间,单位是秒,默认值是 10s。
在集成了融云小视频功能后,可以通过此方法来设置小视频的最长录制时间。录制时间最长不能超过 2 分钟,超过 2 分钟,以 2 分钟为准。
Declared In
RCIM.h