最近公司有项目需要集成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获取最近会话列表和获取最后一条聊天记录的更多相关文章

  1. 阿里云使用js 实现OSS图片上传、获取OSS图片列表、获取图片外网访问地址(读写权限私有、读写权限公共);

    详情请参考:https://help.aliyun.com/document_detail/32069.html?spm=a2c4g.11186623.6.763.ZgC59a 或者https://h ...

  2. iOS6.0下获取通讯录用户列表

    自iOS6.0后获取通讯录列表需要询问用户,经过用户同意后才可以获取通讯录用户列表.而且ABAddressBookRef的初始化工作也由ABAddressBookCreate函数转变为ABAddres ...

  3. 枚举PEB获取进程模块列表

    枚举进程模块的方法有很多种,常见的有枚举PEB和内存搜索法,今天,先来看看实现起来最简单的枚举PEB实现获取进程模块列表. 首先,惯例是各种繁琐的结构体定义.需要包含 ntifs.h 和 WinDef ...

  4. atitit.提升备份文件复制速度(4) ---数据挖掘 获取回收站文件列表

    atitit.) ---数据挖掘 获取回收站文件列表 1. 放入回收站的原理and 1 2. info2文件文件结构 1 3. 获得文件列表2个法: 正则表达式or解析 1 4. 路径正则表达式[a- ...

  5. [转] Android SDK manager 无法获取更新版本列表

      打开这个网址(LINK)就可以看到adt的详细信息. 或者直接在你的eclipse的Help > Install New Software里面add,地址直接输入 https://dl-ss ...

  6. 微信开发第7章 通过accesstoken获取用户黑名单列表

    获取黑名单列表可以查看文档 http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1471422259_pJMWA&token=& ...

  7. python编写的自动获取代理IP列表的爬虫-chinaboywg-ChinaUnix博客

    python编写的自动获取代理IP列表的爬虫-chinaboywg-ChinaUnix博客 undefined Python多线程抓取代理服务器 | Linux运维笔记 undefined java如 ...

  8. 微信开发第6章 通过accesstoken获取用户粉丝列表

    上一章我们讲解到open_id获取用户基本信息,那么open_id哪儿来的呢?就是粉丝列表中可以看到的.本次讲解如何获取粉丝列表. 获取粉丝列表 可以查看文档 http://mp.weixin.qq. ...

  9. 利用未公开API获取终端会话闲置时间(Idle Time)和登入时间(Logon Time)

    利用未公开API获取终端会话闲置时间(Idle Time)和登入时间(Logon Time)作者:Tuuzed(土仔)   发表于:2008年3月3日23:12:38 版权声明:可以任意转载,转载时请 ...

随机推荐

  1. vc 基于对话框多线程编程实例——线程之间的通信

     vc基于对话框多线程编程实例——线程之间的通信 实例:

  2. Shell简易学习练习

    1.Linux Shell入门 Quiz 1 一个接受命令行参数的shell脚本 任务 编写一个shell脚本1.sh,这个脚本接受一个命令行参数,并把这个参数打印两次到标准输出. 如果输入没有参数输 ...

  3. Kafka 高性能吞吐揭秘

    Kafka 高性能吞吐揭秘   Kafka作为时下最流行的开源消息系统,被广泛地应用在数据缓冲.异步通信.汇集日志.系统解耦等方面.相比较于RocketMQ等其他常见消息系统,Kafka在保障了大部分 ...

  4. hdu2861(递推)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2861 题意:n个板凳有m个人坐,求刚好将序列分成k段的方式. 分析: a[n][m][k]=a[n-1 ...

  5. android中更改spinner、AutoCompleteTextView切割线的颜色

    话说去除切割线的方法找了非常久也没找到,最终发现了更改切割线的方法 spinner和AutoCompleteTextView提示列表中间有一条黑色的切割线.想要改变它的颜色值,就要重写style. 1 ...

  6. 百度富文本编辑器UEditor1.3上传图片附件等

    今天一直在整我的一个项目的编辑器上传图片,我用的是百度UEditor 1.3版本号的:如今已经有了1.4的了,只是还算比較新吧,可是官网上面没有上传图片这些的教程,而网上对于这方面的资料非常少啊,折腾 ...

  7. Eclipse插件基础篇一

    名词翻译 有一些名词在翻译的过程中可能会出现歧义,在这里统一一下. アーキテクチャ=architecture=架构 プラットフォーム=platform=平台 コンポーネント=component=组件 ...

  8. wp天气预报

    ak url  http://developer.baidu.com/map/index.php?title=car 后台cs using System; using System.Collectio ...

  9. 使用ReactiveCocoa实现iOS平台响应式编程

    使用ReactiveCocoa实现iOS平台响应式编程 ReactiveCocoa和响应式编程 在说ReactiveCocoa之前,先要介绍一下FRP(Functional Reactive Prog ...

  10. POJ 2182 Lost Cows(牛排序,线段树)

    Language: Default Lost Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9207   Acce ...