网易云信最近联系人中加入本地服务端数据

1.实现效果如下(语音聊天中)

2.实现思路:

特定情况下:
1、获取聊天列表(最近联系人中id)
2、根据id,请求所有人的情况
3、刷新列表

3.具体实现:

1.获取用户id

     items_id.clear();for (int i = 0; i < items_adapter.size(); i++) {//此处,避免最近联系人过多。我们只刷新前三十个人。if (i >= 30) {break;}items_id.add(items_adapter.get(i).getContactId());}

2.请求

犹豫数据渲染在网易云信module中,不能进行网络请求。所以将id通过回调传到app模块中,请求完成后。再传回来。
1、回调
if (callBackUnreadNum != null) {try {callBackUnreadNum.sendList(items_id);} catch (Exception e) {e.printStackTrace();}}
2、请求@Overridepublic void sendList(List<String> list) {//5秒内,不允许重复刷新if (ClickUtils.isInterval(5000)) {return;}String str_params = LXUtils.getStringParamsString(list);org.json.JSONObject params = new org.json.JSONObject();try {params.put("accids", str_params);} catch (JSONException e) {e.printStackTrace();}LxRequest.getInstance().request(getContext(), CHAT_ROOM_USER_STATUS, params, handler, 3, false, "");}
3、传回去
if (object_temp3.getInteger("status") == 0) {JSONArray list = object_temp3.getJSONArray("data");recentContactsFragment.refreshChatroom(list);}

3.刷新列表:
(1).将数据赋值给原先列表:(recentContact.setExtension(map);)

//请求的数据(用户的状态)for (int i = 0; i < list.size(); i++) {JSONObject jsonObject = list.getJSONObject(i);String     accid      = jsonObject.getString("accid");//聊天最近联系人for (int j = 0; j < items_adapter.size(); j++) {RecentContact recentContact = items_adapter.get(j);String        contactId     = recentContact.getContactId();if (contactId.equals(accid)) {Map<String, Object> map = new HashMap<>();map.put("room_id", jsonObject.getInteger("room_id"));recentContact.setExtension(map);}}

(2)RecentViewHolder中进行数据展示

  if (extensionMap != null) {try {room_id =(int) extensionMap.get("room_id");} catch (Exception e) {e.printStackTrace();}if (room_id == 0) {tvVoiceChat.setVisibility(View.GONE);tvDatetime.setVisibility(View.VISIBLE);} else {tvVoiceChat.setVisibility(View.VISIBLE);tvDatetime.setVisibility(View.GONE);}} else {tvVoiceChat.setVisibility(View.GONE);tvDatetime.setVisibility(View.VISIBLE);}

(3)点击后。将数据回传到FragmentMessage,进行进入房间操作

 tvVoiceChat.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (getCallback() != null) {getCallback().onRoomInfo(finalRoom_id + "");}}});
4.刷新时机:

1、左右切换tab
2、下拉刷新
3、聊天列表自动刷新(信息发生改变),列表数量发生改变(减少可不刷新)
4、当用户状态发生改变时候,可以通过socket进行刷新

5.思考点:

1、刷新时机
2、避免左右切换,频繁刷新(5秒内不允许重复刷新)
3、网络请求,传值请求,再回传。
4、进入房间,将事件回传

【工作记录】网易云信最近联系人中加入本地服务端数据相关推荐

  1. 网易云信消息抄送php,消息功能-服务端API文档-IM即时通讯-网易云信开发文档

    消息功能 发送普通消息 请求说明 POST https://api.netease.im/nimserver/msg/sendMsg.action HTTP/1.1 Content-Type:appl ...

  2. 网易云信:通信与视频云服务发展迅猛,或成企业服务中“火箭轨道”

    网易云信,作为孵化自网易集团核心技术架构的通信与视频云服务商,目前服务范围从IM 服务逐步覆盖到视频服务.直播点播以及实时音视频技术等服务.截止2019年3月,云信在三年半时间内以营收年均增长超过20 ...

  3. 【推荐】2020,2021网易数字+大会(云原生微服务+大数据数据库+网易AI实践集合+其他) - (共187份)

    [推荐]2020,2021网易数字+大会(云原生&微服务+大数据&数据库+网易AI实践集合+其他) - (共187份) 下载地址:https://download.csdn.net/d ...

  4. 网易云信亮相LiveVideoStackCon 2019,解读移动端播放器优化实践

    4月19日, LiveVideoStackCon音视频技术大会在上海隆重举办.本届会议以"多媒体技术赋能新世界"为主题,汇集资深的音视频技术工程师,聚焦音频.视频.图像.AI等技术 ...

  5. 网易云信-IM即时通讯 微信小程序端实现

    小程序端的需求,使用网易云信的即时通讯作为咨询沟通的工具. 剥离点对点聊天功能且能独立运行的git项目: https://github.com/GstKishn/IM/ 如解决了你的燃眉之急(开发不易 ...

  6. Pomelo:网易开源基于 Node.js 的游戏服务端框架

    Pomelo 是基于 Node.js 的高性能.分布式游戏服务器框架.它包括基础的开发框架和相关的扩展组件(库和工具包),可以帮助你省去游戏开发枯燥中的重复劳动和底层逻辑的开发.Pomelo 不但适用 ...

  7. 技术实践 | 网易云信在融合通信场景下的探索和实践之 RTMPGateway 服务架构

    导读:随着各个行业的互联网化进程不断演进,融合通信在越来越多的场景中得到应用,例如金融场景的视频面签.医疗场景的远程会诊.企业协作场景的多人视频会议等. 文|本森 网易云信资深音视频服务端开发工程师 ...

  8. 网易云信项望烽:开源最初都是被动的

    开源不只是开源代码,还包括长期的维护开源项目的过程.开源的核心和精髓是什么?能否引用延伸至其他领域?国内开源技术发展现状如何?面临哪些挑战?本文来自开源中国[开源访谈]和网易云信移动端技术专家项望烽的 ...

  9. 网易云信-短信验证码发送、验证

    提示:本文仅记录本人工作中遇到的难点与个人见解,仅供参考,如有问题请见谅. 目录 前言 一.网易云信短信服务是什么? 二.使用步骤 1.创建网易云信工具类CheckSumBuilder 2.短信验证码 ...

最新文章

  1. Windows设置软件开机自启动与关闭
  2. docker快速入门教程
  3. linux系统模块管理
  4. 计算机专业去广发银行,2019广发银行招聘计算机模拟试题
  5. docker容器内访问外部mysql_详解Docker容器内应如何访问本机(宿主机)
  6. superset出现unhashable type: ‘dict‘
  7. 数据结构-判断一棵树是否为二叉排序树
  8. ACM 常用算法合集
  9. java求职面试_Java面试求职
  10. uni 修改数据页面不重新渲染
  11. 备受青睐的在线报表工具有哪些?在线报表怎么做?
  12. python怎么读取txt文件-Python三种读取txt文件方式
  13. 高通RFC适配RFFE-添加MIPI设备【转】
  14. [硬件基础]开关电源和线性稳压器的优缺点?
  15. 青岛科技大学古典音乐考试需要的资料
  16. 身份证实名认证java后台代码
  17. 用C语言构造康托集,洛谷——P1014 Cantor表
  18. Prism4学习笔记(七):State-Based Navigation QuickStart
  19. 建立一个STM32F411RTOS
  20. 关于.Net与J2EE的比较,到底用微软平台还是Java平台的问题

热门文章

  1. 浅拷贝和深拷贝(谈谈java中的clone)
  2. 2020年中国色纺纱行业市场现状分析,国内参与者呈现寡头模式「图」
  3. Bilinear CNN Faster代码解读
  4. docker 部署 kong konga postgresql 以及konga配置
  5. 【工业控制】多变量动态矩阵预测控制(DMC)【含Matlab源码 1499期】
  6. MATLAB在动态经济学中的应用,MATLAB在动态经济学中的应用
  7. 我的Spring入门
  8. 使用CLIP构建视频搜索引擎
  9. pytorch 欧式距离 euclidean distance 实现
  10. 算法笔记之回溯法(一)——溯洄从之,道阻且长;溯游从之,宛在水中央。