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