ChatKit-OC
ChatKit-OC copied to clipboard
更新到了0.8.11,删除最近消息列表中的某个对话记录,重新安装,被删除的记录,依然在.
如题.
同步规则:
- 第一次登录设备才会同步
- 同步的内容为,服务端已经创建的对话,对话的特征是当前clientId为成员之一。所以: 本地从“最近对话列表”中删除不会起作用,必须在服务端删除对话。
那"服务端删除对话"这个功能是你们那边做,还是我们这边可以做吗? 另外,版本记录说,不会同步系统消息.这样的话,我只能用原来的方案,保存conversation ids到自己服务器,然后登陆之后,通过ids去查询对话.这样能查到系统对话.
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这个不合适。
同步系统消息这个,下个版本,我可以叫进去。
之前,你说要给查询到的conversation对象加上lastMessage. 0.8.11下,查询到的系统消息会话的lastMessage中的内容依然不完整,比如attributes自定义的内容没有.有完整的lastMessage加上我在自己服务器保存的最近会话IDs,就能满足我们对于同步消息的需求.之后的版本,这个lastMessage可以添加到conversation中去吗?
系统对话没有lastMessage。
我说错了,是系统消息会话conversation.它应该有,正常情况下,点击这个系统消息会话,会进去对话界面,能看到聊天记录(服务器-用户),这个时候,发现这个conversation的lastMessage就被填满了,我可以顺利的拿到其中的attributes内容.
第一次查询到这个系统消息会话.因为lcck_lastMessage中attributes为空没拿到UI的数据.
进入之后.
返回之后,cell更新,拿到了lcck_lastMessage中attributes来显示头像,detail文本.
0.8.11的消息同步功能,当用户删除某个普通对话之后,由于,消息同步来自服务器,本地删除不会影响服务器.那么,换一个手机再次登陆该账号后,依然显示所有服务器中的会话,这个在业务上不合理.
系统对话不返回lastMessage,这个暂时服务端还不支持,属于后端的一个bug,后期会修复下,ChatKit无需升级就可以支持。
可以给这个消息同步功能开放一个打开关闭功能吗?暂时,我们还是用保存对话IDs的方案来做消息同步.
可以加一个开关,默认开启,手动关闭。
这个问题是否有更新?
比如这个场景: 用户左划删除了一个会话(即删除了本地聊天缓存)。下一次登录还是有此会话(这里是从服务器获取的最近聊天列表)。那么问题是:此时服务器页不应该有已经被删除的会话。 该如何实现?
左划删除一个会话的实现: AVIMConversation *conversation = [self.conversations objectAtIndex:indexPath.row]; [[LCChatKit sharedInstance] deleteRecentConversationWithConversationId:conversation.conversationId]; [self reloadRecentConversations];