2016-03-29 134 views
1

我们使用的是Amazon Ubuntu Server,Apache和PHP 4.0.1版本安装Openfire,使用Swift和XCode 7.2的应用配置是我们正在使用的版本3.6.6的XMPP Framework。 我们可以进行单个文本聊天,但无法存储聊天记录 - 我们如何维护聊天记录并检索该聊天记录。在ios中存储聊天记录

+0

Duplicate http://stackoverflow.com/a/21609882/646998 – Christopher

回答

0

如果您想保持聊天本地历史记录,可以使用coredata以正确的顺序保存所有传入和发送的消息。 要恢复聊天记录,请使用来自coredata的XMPPUserName(from和to)等参数。 要查看的Openfire服务器上的历史,你可以: 安装监控服务器插件 去标签“归档” 选择它们的设置并启用“存档一个一对一聊天”

4
  • 创建在您的项目
  • 核心数据的XCMODEL模式文件添加您的实体这一模式。 这可能是你的情况

    • 消息实体
    • 联系实体
    • 等(任何你想保存)
    • 对于每个实体在您的数据库模型,现在你可以在你的实体添加“属性”(say文字实体)。属性可以是创建时间消息文本
    • 做一个NSObject的扩展类具有相同的属性,你的属性
    .h file 
        @property (nonatomic, retain) NSNumber * createdAt;   
    
    .m file 
        @dynamic createdAt; 
    

现在你可以使用:核心数据操作方法如保存NS管理对象等,以便在数据库上进行保存或其他操作。

例如:使用全名属性在数据库中保存联系人。

DBHandler * dbHandler = [DBHandler sharedInstance];

DB_CONTACT* existingContact = [self getContactByKey:@"userId" value:[userContact userId]]; 
if (existingContact) { 
    return false; 
} 

BOOL result = NO; 

DB_CONTACT *触点= [NSEntityDescription insertNewObjectForEntityForName:@ “DB_CONTACT”
inManagedObjectContext:dbHandler.managedObjectContext];负责

contact.fullName = userContact.fullName; 
NSError *error = nil; 

result = [dbHandler.managedObjectContext save:&error]; 

if (!result) { 
    NSLog(@"DB ERROR :%@",error); 
} 

return result; 

法在DB保存:

[NSEntityDescription insertNewObjectForEntityForName:@ “DB_CONTACT”
inManagedObjectContext:dbHandler.managedObjectContext];

希望这给你一个想法。有关更多详细信息,请选择https://github.com/AppLozic/Applozic-iOS-SDK作为消息传递示例应用程序。

+0

谢谢,请你也看看这也是,我试图发送媒体,但不工作,http://stackoverflow.com/questions/36300935/如何 - 发送 - 媒体在聊天 –