在ios中存储聊天记录

时间:2016-03-29 13:00:03

标签: xmpp chat openfire xmppframework

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

2 个答案:

答案 0 :(得分:4)

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

    • MESSAGE实体
    • 联络实体
    • 等(无论你想保存什么)
    • 对于数据库模型中的每个实体,您现在可以在实体中添加“属性”(比如MESSAGE实体)。属性可以创建时间消息文本等。
    • 创建一个NSObject扩展类,其属性与属性相同
    .h file
        @property (nonatomic, retain) NSNumber * createdAt;         
    
    .m file
        @dynamic createdAt;
    

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

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

  

DBHandler * dbHandler = [DBHandler sharedInstance];

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

BOOL result = NO;
     

DB_CONTACT * 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视为示例应用以进行消息传递。

答案 1 :(得分:0)

如果您想维护聊天本地历史记录,可以使用coredata以正确的顺序保存所有传入和发送消息。 要恢复聊天记录,请使用coredata中的XMPPUserName(from和to)等参数。 要查看openfire服务器上的历史记录,您可以: 安装Monitoring Server插件 转到“存档”选项卡 选择他们的设置并启用“存档一对一聊天”