RCIMReceiveMessageDelegate Protocol Reference

Conforms to NSObject
Declared in RCIM.h

Overview

IMKit消息接收的监听器

设置 IMKit 的消息接收监听器请参考 RCIM 的 receiveMessageDelegate 属性。

Warning: 如果您使用 IMKit,可以设置并实现此 Delegate 监听消息接收; 如果您使用 IMLib,请使用 RCIMClient 中的 RCIMClientReceiveMessageDelegate 监听消息接收,而不要使用此监听器。

– onRCIMReceiveMessage:left: required method

接收消息的回调方法

- (void)onRCIMReceiveMessage:(RCMessage *)message left:(int)left

Parameters

message

当前接收到的消息

left

还剩余的未接收的消息数,left>=0

Discussion

接收消息的回调方法

如果您设置了IMKit消息监听之后,SDK在接收到消息时候会执行此方法(无论App处于前台或者后台)。 其中,left为还剩余的、还未接收的消息数量。比如刚上线一口气收到多条消息时,通过此方法,您可以获取到每条消息,left会依次递减直到0。 您可以根据left数量来优化您的App体验和性能,比如收到大量消息时等待left为0再刷新UI。

Declared In

RCIM.h

– onRCIMReceived:left:offline:hasPackage:

接收消息的回调方法

- (void)onRCIMReceived:(RCMessage *)message left:(int)nLeft offline:(BOOL)offline hasPackage:(BOOL)hasPackage

Parameters

message

当前接收到的消息

nLeft

还剩余的未接收的消息数,left>=0

offline

是否是离线消息

hasPackage

SDK 拉取服务器的消息以包(package)的形式批量拉取,有 package 存在就意味着远端服务器还有消息尚未被 SDK 拉取

Discussion

接收消息的回调方法

和上面的 - (void)onRCIMReceived:(RCMessage *)message left:(int)nLeft 功能完全一致,额外把 offline 和 hasPackage 参数暴露,开发者可以根据 nLeft、offline、hasPackage 来决定何时的时机刷新 UI ;建议当 hasPackage=0 并且 nLeft=0 时刷新 UI

Warning: 如果使用此方法,那么就不能再使用 RCIM 中 - (void)onRCIMReceived:(RCMessage *)message left:(int)nLeft 的使用,否则会出现重复操作的情形

Declared In

RCIM.h

– onRCIMCustomLocalNotification:withSenderName:

当App处于后台时,接收到消息并弹出本地通知的回调方法

- (BOOL)onRCIMCustomLocalNotification:(RCMessage *)message withSenderName:(NSString *)senderName

Parameters

message

接收到的消息

senderName

消息发送者的用户名称

Return Value

当返回值为NO时,SDK会弹出默认的本地通知提示;当返回值为YES时,SDK针对此消息不再弹本地通知提示

Discussion

当App处于后台时,接收到消息并弹出本地通知的回调方法

如果您设置了IMKit消息监听之后,当App处于后台,收到消息时弹出本地通知之前,会执行此方法。 如果App没有实现此方法,SDK会弹出默认的本地通知提示。 流程: SDK接收到消息 -> App处于后台状态 -> 通过用户/群组/群名片信息提供者获取消息的用户/群组/群名片信息 -> 用户/群组信息为空 -> 不弹出本地通知 -> 用户/群组信息存在 -> 回调此方法准备弹出本地通知 -> App实现并返回YES -> SDK不再弹出此消息的本地通知 -> App未实现此方法或者返回NO -> SDK弹出默认的本地通知提示

您可以通过RCIM的disableMessageNotificaiton属性,关闭所有的本地通知(此时不再回调此接口)。

Warning: 如果App在后台想使用SDK默认的本地通知提醒,需要实现用户/群组/群名片信息提供者,并返回正确的用户信息或群组信息。 参考RCIMUserInfoDataSource、RCIMGroupInfoDataSource与RCIMGroupUserInfoDataSource

Declared In

RCIM.h

– onRCIMCustomAlertSound:

当App处于前台时,接收到消息并播放提示音的回调方法

- (BOOL)onRCIMCustomAlertSound:(RCMessage *)message

Parameters

message

接收到的消息

Return Value

当返回值为NO时,SDK会播放默认的提示音;当返回值为YES时,SDK针对此消息不再播放提示音

Discussion

当App处于前台时,接收到消息并播放提示音的回调方法

收到消息时播放提示音之前,会执行此方法。 如果App没有实现此方法,SDK会播放默认的提示音。 流程: SDK接收到消息 -> App处于前台状态 -> 回调此方法准备播放提示音 -> App实现并返回YES -> SDK针对此消息不再播放提示音 -> App未实现此方法或者返回NO -> SDK会播放默认的提示音

您可以通过 RCKitConfigCenter.message.disableMessageAlertSound 属性,关闭所有前台消息的提示音(此时不再回调此接口)。

Declared In

RCIM.h

– onRCIMMessageRecalled:

消息被撤回的回调方法

- (void)onRCIMMessageRecalled:(long)messageId

Parameters

messageId

被撤回的消息ID

Discussion

消息被撤回的回调方法

被撤回的消息会变更为RCRecallNotificationMessage,App需要在UI上刷新这条消息。

Declared In

RCIM.h

– messageDidRecall:

消息被撤回的回调方法

- (void)messageDidRecall:(RCMessage *)message

Parameters

message

被撤回的消息

Discussion

消息被撤回的回调方法

被撤回的消息会变更为RCRecallNotificationMessage,App需要在UI上刷新这条消息。

和上面的 - (void)onRCIMMessageRecalled:(long)messageId 功能完全一致,只能选择其中一个使用。

Declared In

RCIM.h

– interceptMessage:

当 Kit 收到消息回调的方法

- (BOOL)interceptMessage:(RCMessage *)message

Parameters

message

接收到的消息

Return Value

YES 拦截, 不显示 NO: 不拦截, 显示此消息。 此处只处理实时收到消息时,在界面上是否显示此消息。 在重新加载会话页面时,不受此处逻辑控制。 若要永久不显示此消息,需要从数据库删除该消息,在回调处理中调用 deleteMessages, 否则在重新加载会话时会将此消息重新加载出来

Discussion

当 Kit 收到消息回调的方法

收到消息,会执行此方法。

Declared In

RCIM.h