最近联系人中存在的群聊不发消息退出后,该群组会在联系人数据表单中消失,该问题的产生是因为XMPPFramework的
XMPPMessageArchivingCoreDataStorage.m文件中
- (void)archiveMessage:(XMPPMessage *)message outgoing:(BOOL)isOutgoing xmppStream:(XMPPStream *)xmppStream;方法会对每条信息都进行处理,所以需要分情况处理,如果仅仅是进群的消息就不用对contact表做处理,否则的话就会因该消息格式不符合数据表单处理而保存不进去导致之前的数据也消失.我的处理方法的关键代码如下
if ([messageBody rangeOfString:@"*******"].location == NSNotFound) {
contact.streamBareJidStr = archivedMessage.streamBareJidStr;
contact.bareJid = archivedMessage.bareJid;
contact.mostRecentMessageTimestamp = archivedMessage.timestamp;
contact.mostRecentMessageBody = archivedMessage.body;
contact.mostRecentMessageOutgoing = @(isOutgoing);
contact.mostRecentMessageData = archivedMessage.messageData;
}
添加上诉代码即可.("*****"代表收到的消息,不同服务器可能会返回不同的消息,希望能加以区别).