2015-05-15 111 views
1

我无法从明火中获取历史记录。我正在使用XMPP框架获取openfire聊天记录

如何从开放式火灾档案中获取聊天记录并在nslog中打印历史数据?

+0

可能重复[啪API - 读取聊天室的Openfire服务器Histroy]( http://stackoverflow.com/questions/6635034/smack-api-read-chat-histroy-from-openfire-server) – legoscia

+0

嗨Chiristian我可以看到服务器档案文件中的所有历史,我的问题是如何以编程方式获取这些细节列表 – Karthik

回答

1

您需要在openfire中启用该选项才能获取聊天记录。 在openfire上登录,进入群组聊天,然后进入群组聊天设置,然后进入历史设置,然后选择显示整个聊天记录选项。

+0

我已启用显示整个聊天记录选项。但我的问题是在openfire本身我可以看到聊天历史记录和一对一聊天记录我在哪里看到请让我知道 – Karthik

+0

你想在openfire中看到聊天记录?或在应用程序? –

+1

在openfire中添加监控服务,然后您将能够看到消息历史 –

1

关于加入xmpp组,您必须在xmpp核心数据库中编写以下用于存储消息的代码。

storage = [XMPPMessageArchivingCoreDataStorage sharedInstance]; 
moc = [storage mainThreadManagedObjectContext]; 
XMPPMessageArchiving *xmppMessageArchivingModule = [[XMPPMessageArchiving alloc] initWithMessageArchivingStorage:storage]; 
[xmppMessageArchivingModule setClientSideMessageArchivingOnly:YES]; 
[xmppMessageArchivingModule activate:xmppStream]; 
[xmppMessageArchivingModule addDelegate:self delegateQueue:dispatch_get_main_queue()]; 
在此之后,当你在特定的组输入您要使用下面的代码从XMPP核心数据库中获取历史

: -

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]; 
NSError *error; 
NSString *predicateFrmt = @"bareJidStr == %@"; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateFrmt, [NSString stringWithFormat:@"%@%@",GroupName,GROUP_CHAT_DOMAIN]]; 
request.predicate = predicate; 
NSArray *messages = [moc executeFetchRequest:request error:&error]; 
相关问题