ChatKit-OC icon indicating copy to clipboard operation
ChatKit-OC copied to clipboard

更新到了0.8.11,删除最近消息列表中的某个对话记录,重新安装,被删除的记录,依然在.

Open jidanyu opened this issue 7 years ago • 13 comments

如题.

jidanyu avatar Jan 22 '17 06:01 jidanyu

同步规则:

  1. 第一次登录设备才会同步
  2. 同步的内容为,服务端已经创建的对话,对话的特征是当前clientId为成员之一。所以: 本地从“最近对话列表”中删除不会起作用,必须在服务端删除对话。

ChenYilong avatar Jan 22 '17 07:01 ChenYilong

那"服务端删除对话"这个功能是你们那边做,还是我们这边可以做吗? 另外,版本记录说,不会同步系统消息.这样的话,我只能用原来的方案,保存conversation ids到自己服务器,然后登陆之后,通过ids去查询对话.这样能查到系统对话.

jidanyu avatar Jan 22 '17 07:01 jidanyu

App层做比较合适,因为对话中不止一人,其中一人删除,整个conversation就被删除,或者退出群,这个做法不合理。

我建议你这样做:

类似:

[[LCChatKit sharedInstance] setDidSelectConversationsListCellBlock:^(NSIndexPath *indexPath, AVIMConversation *conversation, LCCKConversationListViewController *controller) {
   NSLog(@"conversation selected");
   LCCKConversationViewController *conversationVC = [[LCCKConversationViewController alloc] initWithConversationId:conversation.conversationId];
   [controller.navigationController pushViewController:conversationVC animated:YES];
}];

还有一个API叫做 didDeleteConversationsListCellBlock,你可以在这个方法里退出群组。删除conversation这个不合适。

ChenYilong avatar Jan 22 '17 07:01 ChenYilong

同步系统消息这个,下个版本,我可以叫进去。

ChenYilong avatar Jan 22 '17 07:01 ChenYilong

之前,你说要给查询到的conversation对象加上lastMessage. 0.8.11下,查询到的系统消息会话的lastMessage中的内容依然不完整,比如attributes自定义的内容没有.有完整的lastMessage加上我在自己服务器保存的最近会话IDs,就能满足我们对于同步消息的需求.之后的版本,这个lastMessage可以添加到conversation中去吗?

jidanyu avatar Jan 22 '17 08:01 jidanyu

系统对话没有lastMessage。

ChenYilong avatar Jan 22 '17 08:01 ChenYilong

我说错了,是系统消息会话conversation.它应该有,正常情况下,点击这个系统消息会话,会进去对话界面,能看到聊天记录(服务器-用户),这个时候,发现这个conversation的lastMessage就被填满了,我可以顺利的拿到其中的attributes内容.

image 第一次查询到这个系统消息会话.因为lcck_lastMessage中attributes为空没拿到UI的数据.

image 进入之后.

image

返回之后,cell更新,拿到了lcck_lastMessage中attributes来显示头像,detail文本.

jidanyu avatar Jan 22 '17 08:01 jidanyu

0.8.11的消息同步功能,当用户删除某个普通对话之后,由于,消息同步来自服务器,本地删除不会影响服务器.那么,换一个手机再次登陆该账号后,依然显示所有服务器中的会话,这个在业务上不合理.

jidanyu avatar Jan 22 '17 08:01 jidanyu

系统对话不返回lastMessage,这个暂时服务端还不支持,属于后端的一个bug,后期会修复下,ChatKit无需升级就可以支持。

ChenYilong avatar Jan 22 '17 08:01 ChenYilong

可以给这个消息同步功能开放一个打开关闭功能吗?暂时,我们还是用保存对话IDs的方案来做消息同步.

jidanyu avatar Jan 22 '17 08:01 jidanyu

可以加一个开关,默认开启,手动关闭。

ChenYilong avatar Jan 23 '17 07:01 ChenYilong

这个问题是否有更新?

koalahl avatar May 18 '17 07:05 koalahl

比如这个场景: 用户左划删除了一个会话(即删除了本地聊天缓存)。下一次登录还是有此会话(这里是从服务器获取的最近聊天列表)。那么问题是:此时服务器页不应该有已经被删除的会话。 该如何实现?

左划删除一个会话的实现: AVIMConversation *conversation = [self.conversations objectAtIndex:indexPath.row]; [[LCChatKit sharedInstance] deleteRecentConversationWithConversationId:conversation.conversationId]; [self reloadRecentConversations];

koalahl avatar May 18 '17 07:05 koalahl