iOS: XMPP: post de archivado para el post de chat grupal

Todo el chat individual se envía con el tipo de post como chat. Por lo tanto, la técnica de archivado de posts (que se muestra a continuación) funcionó bien para que guarde / recupere el historial de chat.

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

Sin embargo, para el Chat grupal, el tipo de post enviado es "chat grupal" Esto no será archivado por el XMPPMessageArchivingCoreDataStorage


¿Alguien puede guiarme en cuanto a cómo puedo lograr el post de archivado de posts para charlar en grupo?

Esta es la Serie de estrofas que deberá enviar para get posts archivados. Para get más detalles, puede download http://xmpp.org/extensions/xep-0136.html

REQ

 <iq type='get' id='mrug_sender@staging.openfire.com'> <list xmlns='urn:xmpp:archive' with='mrug_target_155@staging.openfire.com'> <set xmlns='http://jabber.org/protocol/rsm'> <max>6900</max> </set> </list> </iq> 

RES

 <iq type="result" id="mrug_sender@staging.openfire.com" to="mrug_sender@staging.openfire.com/Psi"> <list xmlns="urn:xmpp:archive"> <chat with="mrug_target_155@staging.openfire.com" start="2014-06-07T06:52:26.041Z"/> <chat with="mrug_target_155@staging.openfire.com" 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='mrug_sender@staging.openfire.com'> <retrieve xmlns='urn:xmpp:archive' with='mrug_target_155@staging.openfire.com' start='2014-06-07T06:52:26.041Z'> <set xmlns='http://jabber.org/protocol/rsm'> <max>8000</max> </set> </retrieve> </iq> 

RES

  <iq type="result" id="mrug_sender@staging.openfire.com" to="mrug_sender@staging.openfire.com/Psi"> <chat xmlns="urn:xmpp:archive" with="mrug_target_155@staging.openfire.com" start="2014-06-07T06:52:26.041Z"> <from secs="0" jid="mrug_target_155@staging.openfire.com"> <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> 

Para search la list de todas las conversaciones

 <iq type='get' id='mrug_sender@staging.openfire.com'> <list xmlns='urn:xmpp:archive'> <set xmlns='http://jabber.org/protocol/rsm'> <max>6900</max> </set> </list> </iq> 

Puede get fácilmente posts de file de la database central de xmpp. Utilice el código de abajo.

 XMPPMessageArchivingCoreDataStorage *_xmppMsgStorage = [XMPPMessageArchivingCoreDataStorage shanetworkingInstance]; 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; NSString *pnetworkingicateFrmt = @"bareJidStr == %@"; NSPnetworkingicate *pnetworkingicate = [NSPnetworkingicate pnetworkingicateWithFormat:pnetworkingicateFrmt, [NSString stringWithFormat:@"%@%@",GroupName,GROUP_CHAT_DOMAIN]]; request.pnetworkingicate = pnetworkingicate; NSArray *messages = [moc executeFetchRequest:request error:&error];