首页 > 代码库 > 如何解决群聊(MUC)聊天室重复存储、接收自己发送的消息的问题

如何解决群聊(MUC)聊天室重复存储、接收自己发送的消息的问题

CHENYILONG

如何#解决方案#群聊(MUC)聊天室重复存储、接收自己发送的消


 
编号 项目 描述
1 问题描述
  1. 单聊没问题,群聊会出现自动回复的问题
  2. 数据库中存储的数据出现的问题
  3. 界面上出现的问题:类似自动回复。回音壁一样一模一样地回答。
 2 问题产生的原因
3 群聊基本的原理示意图


聊天内容的显示是经由从数据库进行的读取排序,
4 #解决方案# 拦截阻挡红色区域的执行


 5 失败的尝试:尝试但是没有效果的方法 // AppDelegate.m中
#pragma 接收消息代理监听方法
-(void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message {
XMPPJID *jid = message.to;

if([_xmppStream.myJID isEqualToJID:jid]){
      
return;
     }

}
 6 正确修改的文件 /Users/chenyilong/Desktop/平安校园IM0604/平安校园IM/Classes/Other/Lib/XMPP/Extensions/XEP-0136/XMPPMessageArchiving.m
 7 正确修改的代码 - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
{
XMPPLogTrace();


NSUserDefaults *defaults = [NSUserDefaultsstandardUserDefaults];
NSString *userName = [defaultsstringForKey:@"userName"];

      
XMPPJID *jid = message.from;
NSString *str = jid.resource;
if([str isEqualToString:userName]){
      
return ;
     }


if ([self shouldArchiveMessage:messageoutgoing:NO xmppStream:sender])
{
[
xmppMessageArchivingStoragearchiveMessage:message outgoing:NOxmppStream:sender];
}
}
? chenyilong. Powered by https://www.evernote.com/shard/s227/sh/5e3c15b8-2fb1-4b39-b802-7f4163577351/7fc3a0de07b5865d87dede64bbd625b8
  • Blog