LeanCloud获取最近会话列表和获取最后一条聊天记录
最近公司有项目需要集成IM聊天功能,领导要求用LeanCloud集成,搞不出来就要背包滚蛋啊,没办法只能硬着头皮搞了。
刚拿到官方提供的demo感觉:嗯,不错。图片语音啥的都有了,但尼玛这还不够啊,还有最近会话列表呢?看看他们的代码,突然发现提供了一个封装好的方法findRecentConversationWithBlock,会是这个吗?
不管了先试试再说。额。。。怎么获取的老是最新的一个呢?查看下代码

我们继续查看这个方法声明在AVIMConversationQuery.h这个文件中,发现会话有三个条件查询
好吧,看来这个方法查询的只是最新的一个会话了,不是我们所需要的,既如此,那我们试试第三个方法吧,看方法名应该可以查询到所有会话的记录。试试,果不其然,重新写个方法
OK,就他了。那我们继续写获取每个会话最后一条聊天记录,不可能我们在循环会话列表中再循环获取每个会话的最后一条聊天记录(不要问我为什么,想不通可以去找警察叔叔),这时我们要判断这个会话最后一次更新时间是否与本地缓存的最后一个聊天记录时间一致,否则才需要更新。(PS:我这里所有数据都放在云端,本地只保存会话列表和最后一条聊天记录信息,受我这种缓存模式限制,所以需要每次都同步一下数据的,不多解释了)
眼看是不是即将完成最后一步,只需要根据最后一次聊天更新时间来判断是否需要更新该会话最后一条聊天记录时,又出幺蛾子了,官方文档上说好的updatedAt这个时间呢?怎么点不出来啊???!!查找
尼玛,这有个鸡巴,我们最关注的updatedAt竟然没有,好吧,再去查看下官方文档,发现现在的官方文档是2.0版本的,那么这个聊天类库不会是1.X的吧!!!!!肿么办,,,,难道我要跑过去告诉领导,搞不定了,我要背包滚蛋了?????
当然不行,即使滚蛋了也要把这个问题解决这才是程序员之道是不。既然如此,再去研究官方文档,这次发现2.0版本之后,他们把所有的聊天会话其实都存放在_Conversation表中了,那我们把这张表数据读出来岂不是就ok了呀。OK,怎么读数据,研究下LeanCloud的数据存储发现,原来读数据这么简单,那我们还等什么,开始敲吧
测试下是否拿到了所有的数据。哈哈果然。拿到了我们需要的会话列表,那我们再来获取每个会话的最后一条聊天记录吧
代码里用的时候
OK,所有都搞定,整理整理准备砸领导个碧莲去:什么都想搞,坑爹不,非得需要这个最后一次聊天记录,要是不要得省多少事啊,你知道不?你知道不?你知道不?
以上纯属个人观点,言语措辞有些不当请多担待。写此文章只为让有同样需求的童鞋们可以少走一些弯路而已。同时希望LeanCloud的童鞋们可以提供更好的demo供我等屌丝简单的集成,也祝LeanCloud越来越好。谢谢!
LeanCloud获取最近会话列表和获取最后一条聊天记录的更多相关文章
- 阿里云使用js 实现OSS图片上传、获取OSS图片列表、获取图片外网访问地址(读写权限私有、读写权限公共);
详情请参考:https://help.aliyun.com/document_detail/32069.html?spm=a2c4g.11186623.6.763.ZgC59a 或者https://h ...
- iOS6.0下获取通讯录用户列表
自iOS6.0后获取通讯录列表需要询问用户,经过用户同意后才可以获取通讯录用户列表.而且ABAddressBookRef的初始化工作也由ABAddressBookCreate函数转变为ABAddres ...
- 枚举PEB获取进程模块列表
枚举进程模块的方法有很多种,常见的有枚举PEB和内存搜索法,今天,先来看看实现起来最简单的枚举PEB实现获取进程模块列表. 首先,惯例是各种繁琐的结构体定义.需要包含 ntifs.h 和 WinDef ...
- atitit.提升备份文件复制速度(4) ---数据挖掘 获取回收站文件列表
atitit.) ---数据挖掘 获取回收站文件列表 1. 放入回收站的原理and 1 2. info2文件文件结构 1 3. 获得文件列表2个法: 正则表达式or解析 1 4. 路径正则表达式[a- ...
- [转] Android SDK manager 无法获取更新版本列表
打开这个网址(LINK)就可以看到adt的详细信息. 或者直接在你的eclipse的Help > Install New Software里面add,地址直接输入 https://dl-ss ...
- 微信开发第7章 通过accesstoken获取用户黑名单列表
获取黑名单列表可以查看文档 http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1471422259_pJMWA&token=& ...
- python编写的自动获取代理IP列表的爬虫-chinaboywg-ChinaUnix博客
python编写的自动获取代理IP列表的爬虫-chinaboywg-ChinaUnix博客 undefined Python多线程抓取代理服务器 | Linux运维笔记 undefined java如 ...
- 微信开发第6章 通过accesstoken获取用户粉丝列表
上一章我们讲解到open_id获取用户基本信息,那么open_id哪儿来的呢?就是粉丝列表中可以看到的.本次讲解如何获取粉丝列表. 获取粉丝列表 可以查看文档 http://mp.weixin.qq. ...
- 利用未公开API获取终端会话闲置时间(Idle Time)和登入时间(Logon Time)
利用未公开API获取终端会话闲置时间(Idle Time)和登入时间(Logon Time)作者:Tuuzed(土仔) 发表于:2008年3月3日23:12:38 版权声明:可以任意转载,转载时请 ...
随机推荐
- Android在onInterceptTouchEvent与onTouchEvent
onInterceptTouchEvent: onInterceptTouchEvent是在ViewGroup里面定义的.Android中的layout布局类一般都是继承此类的.onIntercept ...
- 第二十次codeforces竞技结束 #276 Div 2
真是状况百出的一次CF啊-- 终于还Unrated了,你让半夜打cf 的我们怎样释怀(中途茫茫多的人都退场了)--虽说打得也不好-- 在这里写一下这一场codeforces的解题报告.A-E的 题目及 ...
- Java读取本地文件,并显示在JSP文件中
当我们初学IMG标签时,我们知道通过设置img标签的src属性,能够在页面中显示想要展示的图片.其中src的值,可以是磁盘目录上的绝对,也可以是项目下的相对路径,还可以是网络上的图片路径.在存 ...
- CoreJava_Collection接口add有一个返回值!
今天讨论与朋友小知识,我发现很多人不知道collection接口定义add方法返回的值,我们所有的工作很多年Java职工.不熟悉的公共接口,使自己成为在细节上的麻烦.一个小采访这让我想起,当我 ...
- Andriod中绘(画)图----Canvas的使用具体解释
转载请注明出处:http://blog.csdn.net/qinjuning 因为在网络上找到关于Canvas的使用都比較抽象,或许是我的逻辑思维不太好吧,总是感觉理解起来比較困难, 尤其是对 ...
- mini2440驱动奇谭——ADC驱动与測试(动态挂载驱动)
博客:http://blog.csdn.net/muyang_ren 实现功能:开发板动态载入adc驱动模块并能通过測试程序 系统:Ubuntu 14.04 驱动交叉编译内核:linux-2. ...
- VMware Player安装centos
用VMware Player安装centos 到物理硬盘 想要學Linux,但卻不知道如何弄成雙系統?那就使用用虛擬機器來安裝Linux.使用虛體機器來玩,好處除了好裝之外,也不怕把電腦搞壞,不論你怎 ...
- js:进一步关闭(范围:下一个)
function fn1(){ //创建一个数组 var fns = new Array(); //i这个变量是保存在fn1这个作用域中 for(var i=0;i<10;i++ ...
- Linux下精确控制时间的函数
Linux下精确控制时间的函数 在测试程序接口运行时间的时候,常用time,gettimeofday等函数,但是这些函数在程序执行的时候是耗费时间的,如果仅仅测试时间还行,但是如果程序中用到时间控制类 ...
- MySQL 触发器结构及三个案例demo
--你必须拥有相当大的权限才能创建触发器(CREATE TRIGGER),如果你已经是Root用户,那么就足够了.这跟SQL的标准有所不同. CREATE TRIGGER语法 CREATE TRIGG ...