2016-02-29 1 views
1

Je travaille sur une application de discussion pour obtenir une fonctionnalité de discussion multi-utilisateur. Je suis capable de joindre la pièce et envoyer le message mais je suis confronté à un problème étrange. Pendant l'envoi d'un message à la pièce, le message se répète/se duplique. Ce problème est du côté de l'expéditeur (l'utilisateur envoie un message à la pièce) tandis que les autres utilisateurs dans la pièce reçoivent un message correct.XMPP MUC message en double lors de l'envoi d'un message à la salle

- (void)sendMessageWithBody:(NSString)messageBody andMessageId:(NSString) messageId 
{ 
if ([messageBody length] == 0) return; 
NSXMLElement *body = [NSXMLElement elementWithName:@"body" stringValue:messageBody]; 
XMPPMessage *message = [XMPPMessage message]; 
[message addAttributeWithName:@"id" stringValue:messageId]; 
[message addChild:body]; 
[self sendMessage:message]; 
} 
+0

Ajouter un code. –

+0

- (void) sendMessageWithBody: (NSString *) messageBody et MessageMessage: (NSString *) messageId { \t if ([[messageBody length] == 0) return; NSXMLElement * body = [NSXMLElement elementWithName: @ "body" stringValue: messageBody]; \t \t XMPPMessage * message = [message XMPPMessage]; [message addAttributeWithName: @ "id" stringValue: messageId]; \t [message addChild: body]; \t \t [self sendMessage: message]; } – Amrit

+0

cochez cette case http://stackoverflow.com/questions/26681309/how-to-handle-muc-chat-messages-messages-duplicating –

Répondre

0
- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message 
{ 
    XMPPLogTrace(); 

    NSString* fromStr; 
    NSArray* arrayFrom = [[message fromStr] componentsSeparatedByString:@"/"]; 
    if ([arrayFrom count] > 1) 
    { 
     fromStr = [arrayFrom objectAtIndex:1]; 
    } 

    NSString* toStr; 
    NSArray* arrayTo = [[message toStr] componentsSeparatedByString:@"@"]; 

    if ([arrayTo count] > 1) 
    { 
     toStr = [arrayTo objectAtIndex:0]; 
    } 
    if ([fromStr isEqualToString:toStr] || ([[message body] length] == 0)) { 
     return; 
    } 
    if ([self shouldArchiveMessage:message outgoing:NO xmppStream:sender]) 
    { 
     [xmppMessageArchivingStorage archiveMessage:message outgoing:NO xmppStream:sender]; 
    } 
} 
+0

shouldArchiveMessage n'est pas accessible. Comment l'avez-vous utilisé? –