注册

将之前聊天记录(用环信之前)插入DB

将之前聊天记录(用环信之前)插入DB
我的步骤:创建会话--》创建消息插入会话--》然后将会话插入DB


屏幕快照_2016-03-13_下午5.19_.16_.png


错误如图所示
 
改变思路之后是
创建消息(EMessage)直接写入DB

[httpTool GET:url withParameters:parameter success:^(NSDictionary *data) {
//[weakSelf insertConversationAndMessage:data];

NSArray *allKeys = [data allKeys];

for (int i = 0 ; i < allKeys.count; i++) {
NSString *conversationID = allKeys[i];
//创建conversation实例
EMConversation * insertConverstaion = [[EMClient sharedClient].chatManager getConversation:conversationID type:EMConversationTypeChat createIfNotExist:YES];
insertConverstaion.ext = nil;
//[weakSelf.insertConverstationArray addObject:insertConverstaion];
NSArray *messageArray = [data objectForKey:conversationID];

for (int j = 0; j < messageArray.count; j++) {

NSMutableDictionary *messageDic = messageArray[j];
//
EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:messageDic[@"text"]];
EMMessage *message = [[EMMessage alloc] initWithConversationID:conversationID from:messageDic[@"from"] to:messageDic[@"to"] body:body ext:nil];
message.isRead = YES;
message.timestamp = [messageDic[@"timestamp"] longLongValue];
message.messageId = [NSString stringWithFormat:@"HistoryMessage%@__%d",conversationID,j];
message.chatType = EMChatToolbarTypeChat;
message.isDeliverAcked = YES;
message.isReadAcked = YES;
message.status = EMMessageStatusSuccessed;
message.direction = [messageDic[@"direction"] boolValue] == YES ? EMMessageDirectionSend: EMMessageDirectionReceive;
//[insertConverstaion insertMessage:message];
[weakSelf.insertConverstationArray addObject:message];

}
}
[[EMClient sharedClient].chatManager importMessages:weakSelf.insertConverstationArray];

//[[EMClient sharedClient].chatManager importConversations:weakSelf.insertConverstationArray];


//如果成功调用这个方法
if (weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(getAllHistoryMessagesFromFTServicerFinish:)]) {
[weakSelf.delegate getAllHistoryMessagesFromFTServicerFinish:weakSelf];
}

[[NSUserDefaults standardUserDefaults] setObject:@"Done" forKey:FTHistoryMessageDownloadFromServicer];
[[NSUserDefaults standardUserDefaults] synchronize];
//
} failure:^(NSError *error, AFHTTPRequestOperation *operation) {
//如果失败调用这个方法
if (weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(getAllHistoryMessagesFromFTServicerFail:)]) {
[weakSelf.delegate getAllHistoryMessagesFromFTServicerFail:weakSelf];
}

}];


屏幕快照_2016-03-13_下午9.22_.55_.png


这次的错误提示是
[EMassageModel ratain] message sent to delloced instance.
已邀请:
环信SDk已经做了本地保存了,您不需要再做一次保存的,后面直接取就可以了。
 
环信聊天记录存储

A发送消息到环信服务器的同时,SDK会保存这条消息到本地数据库(SDK内部创建数据库,不允许直接操作)中,环信服务器在推送消息到B的同时也会在服务器记录下来(消息历史记录只会保留14天),B收到消息后,SDK会将这条消息存储到本地数据库

要回复问题请先登录注册