iOS: XMPP: Archivage des messages pour les messages de groupe

Tout le chat one-one est envoyé avec le type de message en tant que chat. Ainsi, la technique d'archivage des messages (illustrée ci-dessous) a bien fonctionné pour que je puisse sauvegarder / récupérer l'historique des discussions.

// Setup message archiving xmppMessageArchivingStorage = [XMPPMessageArchivingCoreDataStorage sharedInstance]; xmppMessageArchiving = [[XMPPMessageArchiving alloc] initWithMessageArchivingStorage:xmppMessageArchivingStorage]; [xmppMessageArchiving setClientSideMessageArchivingOnly:YES]; // Activate xmpp modules [xmppMessageArchiving activate:xmppStream]; // Add delegate [xmppMessageArchiving addDelegate:self delegateQueue:dispatch_get_main_queue()]; 

Cependant, pour Group Chat, le type de message envoyé est "groupchat" Ceci ne sera pas archivé par XMPPMessageArchivingCoreDataStorage


Quelqu'un peut-il me guider pour savoir comment je peux réaliser l'archivage des messages pour les messages de groupe?

C'est la série de stratagèmes que vous devrez envoyer pour recevoir des messages archivés. Pour plus de détails, vous pouvez order http://xmpp.org/extensions/xep-0136.html

REQ

 <iq type='get' id='[email protected]'> <list xmlns='urn:xmpp:archive' with='[email protected]'> <set xmlns='http://jabber.org/protocol/rsm'> <max>6900</max> </set> </list> </iq> 

RES

 <iq type="result" id="[email protected]" to="[email protected]/Psi"> <list xmlns="urn:xmpp:archive"> <chat with="[email protected]" start="2014-06-07T06:52:26.041Z"/> <chat with="[email protected]" start="2014-06-07T07:06:53.372Z"/> <set xmlns="http://jabber.org/protocol/rsm"> <first index="0">866</first> <last>867</last> <count>2</count> </set> </list> </iq> 

REQ

 <iq type='get' id='[email protected]'> <resortingeve xmlns='urn:xmpp:archive' with='[email protected]' start='2014-06-07T06:52:26.041Z'> <set xmlns='http://jabber.org/protocol/rsm'> <max>8000</max> </set> </resortingeve> </iq> 

RES

  <iq type="result" id="[email protected]" to="[email protected]/Psi"> <chat xmlns="urn:xmpp:archive" with="[email protected]" start="2014-06-07T06:52:26.041Z"> <from secs="0" jid="[email protected]"> <body>Wow !! This is Archived Message</body> </from> <set xmlns="http://jabber.org/protocol/rsm"> <first index="0">0</first> <last>0</last> <count>1</count> </set> </chat> </iq> 

Pour récupérer la list de toutes les conversations

 <iq type='get' id='[email protected]'> <list xmlns='urn:xmpp:archive'> <set xmlns='http://jabber.org/protocol/rsm'> <max>6900</max> </set> </list> </iq> 

Vous pouvez facilement get des messages d'archive à partir de la database principale xmpp. Utilisez le code ci-dessous.

 XMPPMessageArchivingCoreDataStorage *_xmppMsgStorage = [XMPPMessageArchivingCoreDataStorage sharedInstance]; NSManagedObjectContext *moc = [_xmppMsgStorage mainThreadManagedObjectContext]; NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"XMPPMessageArchiving_Message_CoreDataObject" inManagedObjectContext:moc]; NSFetchRequest *request = [[NSFetchRequest alloc]init]; [request setEntity:entityDescription]; //[request setFetchLimit:20]; NSError *error; NSSsortingng *predicateFrmt = @"bareJidStr == %@"; NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateFrmt, [NSSsortingng ssortingngWithFormat:@"%@%@",GroupName,GROUP_CHAT_DOMAIN]]; request.predicate = predicate; NSArray *messages = [moc executeFetchRequest:request error:&error];