融云设置已读,未读消息标识

需求:会话列表,以及会话界面发出去的消息前面加上已读,未读的标识

官方给的解决方案

1、您可以通过 rc_config.xml 里的开关,开启消息的阅读回执功能。默认 false 为关闭状态,设置成 true 为开启
2、请在 init 之后调用下面方法来设置支持消息回执的会话类型。目前只支持 PRIVATE、GROUP 和 DISCUSSION 三种类型
官方还有一个说的更详细的文档,忘了在哪里,找不到了

官方的没法解决我的需求,就算它能显示也不是我想要的。

我的方案处理会话界面

1、自定义类继承自 MessageListAdpater, 然后重写其中的 holder.sentStatus

2、布局是 rc_item_message.xml

3、自定义类集成自 ConversationFragment,然后重写onResolveAdpater 中得到自定义adpter并返回
参考代码

public class MyMessageListAdapter extends MessageListAdapter {
public MyMessageListAdapter(Context context) {super(context);
}@Override
protected void bindView(View v, int position, UIMessage data) {super.bindView(v, position, data);if(data != null){final MessageListAdapter.ViewHolder holder = (MessageListAdapter.ViewHolder) v.getTag();if(holder != null){if (data.getMessageDirection().equals(Message.MessageDirection.RECEIVE)) {holder.sentStatus.setVisibility(View.GONE);} else {LogUtils.i("msgStatus", data.getSentStatus().getValue() + "");if (data.getSentStatus() == Message.SentStatus.SENT) {holder.sentStatus.setCompoundDrawablesWithIntrinsicBounds(v.getContext().getResources().getDrawable(R.mipmap.ic_msg_sent),null,null,null);holder.sentStatus.setText(R.string.im_msg_sent);holder.sentStatus.setVisibility(View.VISIBLE);} else if (data.getSentStatus() == Message.SentStatus.READ) {holder.sentStatus.setText(R.string.im_msg_read);holder.sentStatus.setCompoundDrawablesWithIntrinsicBounds(v.getContext().getResources().getDrawable(R.mipmap.ic_msg_read),null,null,null);holder.sentStatus.setVisibility(View.VISIBLE);}}}}}}

敲黑板:rc_config.xml 里的开关,开启消息的阅读回执功能。默认 false 为关闭状态,设置成 true 为开启 ,如果能正常显示最好,不能正常显示,需要在会话界面自己发送阅读回执。

处理会话列表界面

集成 PrivateConversationProvider 然后重新 bindView 方法, 然后在此方法中 根据 Message.SentStatus来进行修改显示内容
参考代码:

@ConversationProviderTag(
conversationType = "private",
portraitPosition = 1
)
public class MyPrivateConversationProvider extends PrivateConversationProvider {@Override
public void bindView(View view, int position, UIConversation data) {super.bindView(view, position, data);PrivateConversationProvider.ViewHolder holder = (PrivateConversationProvider.ViewHolder)view.getTag();if(null != data && data.getConversationSenderId() != null && data.getConversationSenderId().equals(RongIM.getInstance().getCurrentUserId())){if(data.getSentStatus() != null){if(data.getSentStatus() == Message.SentStatus.FAILED || data.getSentStatus() == Message.SentStatus.SENDING){holder.readStatus.setVisibility(View.GONE);} else {if(data.getSentStatus() == Message.SentStatus.SENT){holder.readStatus.setImageResource(R.mipmap.ic_msg_sent);holder.readStatus.setVisibility(View.VISIBLE);} else if(data.getSentStatus() == Message.SentStatus.READ){holder.readStatus.setImageResource(R.mipmap.ic_msg_read);holder.readStatus.setVisibility(View.VISIBLE);}}}}}}

提供下我问的工单
https://developer.rongcloud.cn/ticket/info/eB25GrlyC8EwlcdG1kY=
有问题请加Q群:142739277

融云设置已读,未读消息标识相关推荐

  1. 融云客服获取未读消息

    比较极客的我们 能动手的尽量少BB 这里主要介绍两个API getUnreadCount setOnReceiveMessageListener 思路:为 setOnReceiveMessageLis ...

  2. android读信息会话,在融云 IMkit 会话界面基础上添加消息已读未读.

    在融云 IMkit 会话界面基础上添加消息已读未读. 使用过融云的同学们可能知道. 融云 IMkit 的会话界面, 发送玩消息后, 如果对方已读, 发送端则会显示小对号的图片. 但是更具需求要把小对号 ...

  3. IM群聊消息的已读未读功能在存储空间方面的实现思路探讨

    1.引言 IM系统中,特别是在企业应用场景下,消息的已读未读状态是一个强需求. 以阿里的钉钉为例,钉钉的产品定位是用于商务交流,其"强制已读回执"功能,让职场人无法再"假 ...

  4. vue+websocket+nodejs实现聊天室 - 消息已读未读

    前言 上一篇讲了聊天室增加一对一单聊,这次讲如何新增已读未读状态. 大概思路: 服务器返回消息列表,增加参数status为1,单聊和群聊通过过滤状态区分对应未读数量,当前聊天,直接在currentMe ...

  5. Redis实现排行榜、延迟队列、LRU、消息已读未读(Redisson客户端实现)

    目录 序言 Redis客户端选型 Redis配置 Redis实现排行榜 Redis实现延迟队列 Redis LRU(Least Recently Used)使用 Redis实现消息已读未读 总结 序言 ...

  6. 面试官:群聊消息的已读未读功能,你来设计一个?

    欢迎关注方志朋的博客,回复"666"获面试宝典 一朋友和我讨论他前段时间面试某大公司的一题目 : 企业IM比如企业微信.钉钉里面的群消息的有个已读未读的功能,发送者刚发出消息时,当 ...

  7. 群聊消息“已读”/“未读” 功能解决方案!

    一朋友和我讨论他前段时间面试某大公司的一题目: 企业IM比如企业微信.钉钉里面的群消息的有个已读未读的功能,发送者刚发出消息时,当前群里其他群成员都是未读状态,陆陆续续有人看了这个消息,这时候消息的详 ...

  8. mysql消息已读未读_Redis实现信息已读未读状态提示

    本文为大家分享了Redis实现信息已读未读状态提示的关键代码,希望可以给大家一些启发,具体内容如下 前提: 假如现在有2个模块需要提示消息:只要存在用户在上个时间点之后没有看过的信息就提示用户有新的信 ...

  9. 面试题:群聊消息的已读未读设计

    点击上方"Java之间",选择"置顶或者星标" 你关注的就是我关心的! 作者:小猿学习笔记 一朋友和我讨论他前段时间面试某大公司的一题目 : 企业IM比如企业微 ...

最新文章

  1. NC14414 小AA的数列
  2. 裸机篇 -- S5PV210的中断体系
  3. [scala-spark]2. Scala运行原理与源码查看
  4. Java调用动态库 缺点,Java调用动态库所需要关心的有关问题
  5. Modelbuilder进阶教程
  6. mysql print r_PHP 中 PDO 打印出错信息,和 print_r 的位置提前的奇怪表现问题
  7. 苹果电脑如何查看本机IP地址和DNS?
  8. Atitit code 范例 example code 范例 example 更好一些,将最佳实践融入其中。。目录第一章 Springboot 1第二章 Rest api 1第一节
  9. 实时帧数手机_小米部分高刷新率机型吃鸡强制开启120帧
  10. 产品经理为什么比程序员工资要高?百度员工:因为他是产品灵魂
  11. AI 之父 | 图灵荣登 50 英镑钞票,荣耀比肩牛顿达尔文!
  12. drain open 线与_整理:请教open drain应该怎么理解
  13. java中级工程师所需的技能_java工程师简历专业技能填写样本
  14. NLP中的attention机制总结
  15. python爬山算法
  16. 聊聊并发(10)生产者消费者模式
  17. 理解和使用工具(二)-文件系统Heirarchy
  18. 华为昇腾系列开发入门教程二:开局一张图,手把手教你鉴“XX”
  19. 移动办公邮箱app,怎么设置邮件归档?
  20. Nexus5 安装Gapps

热门文章

  1. NFS的soft和hard模式
  2. 加密相册、保险箱App打开就闪退、点击提示App Store不提供应用、需要更新才能使用的解决方案
  3. 单元格下拉全选快捷键_EXCEL筛选后把某一列全选,用什么快捷键。我用CTRL+SHIFT+下方向键总是全选,为什么?求教!...
  4. 剪纸游戏 (SG函数)
  5. spring---自定义Filter有两种方式
  6. 什么是VI?(虚拟仪器)
  7. USB转串口的驱动 cp210x
  8. oracle内连接简写,【Oracle】——内连接、外连接
  9. 转型下沉的51talk 能否在在线教育“造”出一个拼多多?
  10. Mysql之group by 和order by 一起用时的排序问题