在接收到好友发过来的消息时,
如果是正在与之聊天,则需要更新
当前聊天列表,即插入一条新的消息记录:
- (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,
那么在接收到新的消息时,会回调。