2016-03-29 85 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/如何 - 發送 - 媒體在聊天 –