获取 openfire 聊天记录
Posted
技术标签:
【中文标题】获取 openfire 聊天记录【英文标题】:Get openfire Chat History 【发布时间】:2015-05-15 14:16:12 【问题描述】:我无法从明火中获取历史记录。我正在使用 XMPP 框架
如何从开火存档中获取聊天记录并在nslog中打印历史数据?
【问题讨论】:
Smack API - Read Chat Histroy from Openfire Server的可能重复 嗨 Chiristian 我可以看到服务器存档文件中的所有历史记录,我的问题是如何以编程方式将这些详细信息列在表中 【参考方案1】:您需要在 openfire 中启用该选项才能获取聊天记录。 登录openfire,进入群聊,然后进入群聊设置,然后进入历史设置,然后选择显示整个聊天记录选项。
【讨论】:
我已启用显示整个聊天记录选项。但我的问题是在 openfire 本身我可以看到聊天记录和一对一的聊天记录我必须看到的地方请告诉我 您想在 openfire 中查看聊天记录吗?还是在应用中? 在openfire中添加监控服务就可以看到消息历史了 我想在我的应用中查看历史记录:Tarun Khosla 我需要添加任何插件才能看到消息 History : Jaspreet Singh【参考方案2】:在加入 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];
【讨论】:
以上是关于获取 openfire 聊天记录的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Asmack 从 Openfire Sever 中获取所有用户创建的聊天室列表
无法使用 ruby xmpp4r 获取以前的群聊历史记录
如何在android应用程序中从openfire获取离线消息[关闭]