在接收到好友发过来的消息时,
如果是正在与之聊天,则需要更新
当前聊天列表,即插入一条新的消息记录:
- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message {
NSLog(@"xmpp stream 接收到好友消息:%@", [message XMLString]);
if (self.getNewMessageBlock) {
XHMessage *newMessage = [[XHMessage alloc] initWithText:message.body
sender:message.fromStr
timestamp:[NSDate date]];
self.getNewMessageBlock(newMessage, message.from.bare);
}
}
接收到消息时,把消息实体转换成模型,返回新接收的消息对象,并返回消息接收者。
那么我们在界面处理时,需要判断一下是否是我正在与好友聊天的消息:
typeof(self) weakSelf = self;
[HYBXMPPHelper shared].getNewMessageBlock = ^(XHMessage *newMessage, NSString *receiver) {
if ([receiver isEqualToString:weakSelf.jidString]) {
[weakSelf addMessage:newMessage];
[weakSelf.messageTableView reloadData];
}
};
这里是通过使用block的方式来处理,没有登录通知或者代理,如果设置了接收到新消息的block,
那么在接收到新的消息时,会回调。