2015-05-15 141 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]; 
相關問題