当我们的app中有集成环信即时通信SDK时,我们需要实现这样一个功能,将某一个好友的聊天设置为置顶,这样不管你当前正在跟多少好友聊天,该好友的消息始终都会出现在第一个回话列表中,这类似于微信的置顶功能。但是环信SDK并没有直接提供这样的api可以设置置顶的功能,这就需要客户端自己去实现此功能。
当然,虽然环信没有直接提供api让我们去设置,但也不是这么霸道一点辅助都不给,我们查阅环信技术文档时,发现了这样的两个方法
我们再来看下文档中关于这两个方法的解释:
扩展字段的好处就是,我们可以为每一条消息都添加一个扩展字段,用来标识消息的特别之处,比如我们可以为某一个会话设置一个扩展字段用来标识该条会话是否需要置顶,将需要置顶的会话保存在一个容器中,将不需要置顶的会话保存在另一个容器中。有了这个扩展字段,我们就可以很方便的实现置顶功能了。
具体的实现过程如下:
1、在EaseConversationListFragment中定义一个新容器,用来保存置顶的会话
2、在loadConversationList()方法中根据conversation.getExtField()的值是否是我们设置置顶会话的扩展字段(此处扩展字段为"is_top"),如果收到的扩展字段是is_top,则将该条会话保存到会话置顶容器中,否则保存到不是置顶容器中,如下图:
3、自定义对置顶会话容器进行排序(这个可随意,看自己想要怎么排就怎么排),这边给个简单的例子:
4、在setUpView()方法中对会话列表数据进行组装(将置顶的会话和非置顶的会话整合到一个容器中)
5、在会话列表更新回调里也要记得重新组装数据呦!!!
6、通过以上5个步骤后,恭喜你,万事俱备,只差去为某一个会话设置置顶或者取消置顶功能。
至此,为环信IM的聊天设置会话置顶的功能已经全部实现,如有疑问,欢迎您的留言哈,后期还会不断的更新Android实际开发过程中遇到的一些问题。