消息
接收消息¶
设置了 IMKit
消息监听之后,SDK 在接收到消息时候会执行此方法(无论 App
处于前台或者后台)。
注意
- 拦截到此监听的时候,消息已经被存入了 SDK 内置数据库中,在此处对消息体内容进行修改是不会保存到数据库中的。
- 使用
IMLib
,请使用RCIMClient
中的RCIMClientReceiveMessageDelegate
监听消息接收,而不要使用此方法。
/*!
IMKit消息接收的监听器
*/
@protocol RCIMReceiveMessageDelegate <NSObject>
/*!
IMKit消息接收的监听器
@warning 如果您使用IMKit,可以设置并实现此Delegate监听消息接收;
如果您使用IMLib,请使用RCIMClient中的RCIMClientReceiveMessageDelegate监听消息接收,而不要使用此方法。
*/
@property(nonatomic, weak) id<RCIMReceiveMessageDelegate> receiveMessageDelegate;
参数 | 类型 | 说明 |
---|---|---|
message | RCMessage | 当前接收到的消息 |
left | int | 还剩余的未接收的消息数,left>=0 |
/*!
接收消息的回调方法
其中,left为还剩余的、还未接收的消息数量。比如刚上线一口气收到多条消息时,
通过此方法,您可以获取到每条消息,left会依次递减直到0。
您可以根据left数量来优化您的App体验和性能,比如收到大量消息时等待left为0再刷新UI。
*/
- (void)onRCIMReceiveMessage:(RCMessage *)message left:(int)left;
示例代码:
//设置接收消息代理
[RCIM sharedRCIM].receiveMessageDelegate = self;
//自定义操作
- (void)onRCIMReceiveMessage:(RCMessage *)message left:(int)left {
if ([message.content isMemberOfClass:[RCInformationNotificationMessage class]]) {
RCInformationNotificationMessage *msg = (RCInformationNotificationMessage *)message.content;
// NSString *str = [NSString stringWithFormat:@"%@",msg.message];
if ([msg.message rangeOfString:@"你已添加了"].location != NSNotFound) {
[RCDDataSource syncFriendList:[RCIM sharedRCIM].currentUserInfo.userId
complete:^(NSMutableArray *friends){
}];
}
}
}
发送消息¶
消息发送监听器,可以监听消息发送前以及消息发送后的结果。
使用 IMKit
,可以设置并实现此 Delegate
监听消息发送;
@protocol RCIMSendMessageDelegate <NSObject>
@property(nonatomic, weak) id<RCIMSendMessageDelegate> sendMessageDelegate;
准备发送消息¶
此方法在消息准备向外发送时会执行,开发者可以在此方法中对消息内容进行过滤和修改等操作。如果此方法的返回值不为 nil,SDK 会对外发送返回的消息内容。
注意
当使用了 RCConversationViewController
中的 willSendMessage:
方法时,请不要重复使用此方法。选择其中一种方式实现需求即可。
参数 | 类型 | 说明 |
---|---|---|
messageContent | RCMessageContent | 消息内容 |
返回值 | RCMessageContent | 修改后的消息内容 |
- (RCMessageContent *)willSendIMMessage:(RCMessageContent *)messageContent;
发送消息完成¶
此方法在消息向外发送结束之后会执行。您可以通过此方法监听消息发送情况。
注意
当使用了 RCConversationViewController
中的 didSendMessage:content:
方法,请不要重复使用此方法。选择其中一种方式实现需求即可。
参数 | 类型 | 说明 |
---|---|---|
messageContent | RCMessageContent | 消息内容 |
status | NSInteger | 发送状态,0表示成功,非0表示失败的错误码 |
- (void)didSendIMMessage:(RCMessageContent *)messageContent status:(NSInteger)status;