美文网首页Android开发Android技术知识Android知识
基于【LeanCloud + 融云】的IM聊天应用 v1.0

基于【LeanCloud + 融云】的IM聊天应用 v1.0

作者: boredream | 来源:发表于2017-07-26 09:44 被阅读231次

项目地址

主项目:https://github.com/boredream/BDChat
依赖主model:https://github.com/boredream/bdcodehelper
服务端代码:https://github.com/boredream/BoreIMCloud

欢迎 Star和Follow~
注意:
  • 网络框架、常用工具类封装在了依赖主model:bdcodehelper中了,是单独放在一个git项目里的,因此需要手动下载然后复制到主项目目录下。
  • 服务端代码需要登录LeanCloud才能部署,因此如果需要自定义修改重新部署请参考LeanCloud相关文档自行申请账号替换配置然后部署。

项目总结

开发周期:2.5周

7.3 ~ 7.20
(实际开发天数:10 天)

页面:15个

  • Splash页面
  • 登录页面
  • 忘记密码
  • 注册页面
  • 会话列表(融云)
  • 通讯录
  • 我的
  • 会话页面(融云基础上稍微修改)
  • 会话详情
  • 成员列表修改页面
  • 新的朋友
  • 添加好友
  • 好友详情
  • 修改信息
  • 修改昵称

接口:14个

其中云引擎方法5个(服务端需要些代码)

存在的问题

  • 类似的页面比如通讯录和添加好友时候的好友列表,不知道咋提取封装更好。
    是直接复用同一个页面?同一个Adapter?还是只同一个ViewHolder
  • RxJava使用不够熟练
  • 数据返回页面如果不在了,怎么处理更好?不太想用RxLifeCycler的那套
  • 图片压缩的东西,因为是用到了Glide所以需要Context对象,咋放到presetner里呢~

复杂的业务分析

最核心的部分其实是会话列表聊天页面啥的,但是融云已经封装好了,这里本着实用的角度就不重复造轮子了,直接使用~

个人觉得最麻烦的点在于好友关系的处理
就是申请添加、接受、新的好友等相关业务上

好友关系设计

服务端保存一个好友关系FriendRelation表,仨字段,srcUser, targetUser, relation
其中relation字段:

  • -1 src申请加target好友
  • 1 互相为好友关系

【添加好友流程】
情景一,新的添加

  1. A通过昵称或其他信息搜索到用户B
  2. A调用接口申请添加好友B
  3. 服务端先判断好友关系数据库中AB是否有关系
  4. 如果已经是好友,则返回已添加提示
  5. 如果A曾经向B提交过申请,则返回成功申请提示,但是数据库中不再重复添加好友关系
  6. 如果是B已经向A提交过申请,则直接relation=1双方改为好友
  7. 如果双方没关系,则表中插入一条信息 AUser BUser -1,代表A向B发出了好友申请。同时向B发送一条IM系统消息“xxx申请添加您为好友”

情景二,同意

  1. B收到A的好友申请,在新的好友中显示
  2. 同意添加好友
    服务端接受到B的同意请求后,将A和B的关系修改为好友,即表中的对应数据修改为 AUser BUser 1

【新的好友】
只有两种情况:对方加我了,显示“同意”、同意后显示“已添加”
注意,我申请加别人不在新的好友中显示
所以获取新的好友列表的服务端设计为:

  • 查询tarUser是我的所有关系列表数据,且relation=-1代表其他人对当前用户提交的好友申请,然后返回所有的申请用户
  • “已添加”情况来源于本地数据库,只有在收到请求且同意后才修改展示(本功能2.0实现)

展示页面

登陆.png 会话列表.png 会话页面.png 会话详情.png 发起群聊.png 搜索好友.png 新的朋友.png 详细资料.png 我的.png

相关文章

  • 基于【LeanCloud + 融云】的IM聊天应用 v1.0

    项目地址 主项目:https://github.com/boredream/BDChat依赖主model:http...

  • 即时聊天

    六个免费开源的即时通讯软件源代码 常见即时通讯:网易IM 、腾讯IM、环信IM、融云IM、leancloud IM...

  • 即时通讯

    第一种方式,使用第三方IM服务, 比如: 网易云信、环信、融云、LeanCloud、阿里云、腾讯云、阿里悟空、极光...

  • 融云/leancloud

    leancloud 融云 leancloud 经学长介绍原来开发AndroidAPP/iOS可以不用完全自己写后台...

  • 融云聊天之iOS笔记摘录

    1. 概念 融云SDK的系统架构 相关名词 2. 集成融云 登录融云 断开融云 会话列表页 聊天内容页 3. IM...

  • 第三方即时通信IM服务对比分析

    首发于fxm5547的博客 本次调研网易云信、环信、融云、leancloud和腾讯云通信。阿里的云旺因应用场景及基...

  • 第三方IM选型

    第三方IM分析对比 1. 功能 可以看到:除了 LeanCloud 不支持实时音视频功能,融云不支持直接发送视频消...

  • Android 即时聊天-融云IM集成。

    效果图: 开发前我们需要先去官网注册:融云官网 只需输入应用名称和描述即可创建成功。 为了集成更加方便,我们下载官...

  • IM 的集成

    1.1:融云的分类(简介) 1.1.1:融云 IM 界面组件 - RongCloud IMKit IMKit 是融...

  • 第三方IM分析

    目前第三方IM主要有以下几种(排名不分先后): 环信 容联云 融云 极光IM 云通讯IM(腾讯) 云旺IM(阿里)...

网友评论

    本文标题:基于【LeanCloud + 融云】的IM聊天应用 v1.0

    本文链接:https://www.haomeiwen.com/subject/bfdnkxtx.html