zl程序教程

您现在的位置是:首页 >  其他

当前栏目

微信聊天项目

2023-04-18 15:54:54 时间

效果图

登录/会话界面/通讯录/聊天界面/自定义表情/更多界面

群聊详情/好友详情/添加朋友/发送位置

深色模式/音视频通话界面

已有功能

  • 登录注册,退出
  • 更改用户昵称,头像
  • 添加好友,群
  • 发送消息:支持文本,图片,视频,文件,Emoji,大表情,位置,语音
  • 支持单聊,群聊音视频通话
  • 群聊功能:创建群聊,解散群聊,更改群聊资料,设置禁言,设置管理员,邀请/移除成员,设置群名片
  • 消息离线推送:目前集成了小米推送
  • 转发消息:因为SDK不支持,目前只能转发文本消息
  • 引用消息:因为SDK不支持,目前只能引用文本消息
  • 全局搜索:因为SDK不知道,目前只能本地搜索我添加的好友,添加的群聊
  • 二维码:显示我的,好友,群聊二维码,并支持扫描二维码
  • 其他聊天功能:会话置顶,会话免打扰(因为SDK不支持,单聊离线消息无效),标记未读,设置聊天界面背景
  • 统计服务:集成了Umeng,支持总用户,活跃,崩溃统计
  • 其他功能:文件预览,深色模式

已经实现的功能

  • 重构音视频通话封装:目前封装用的官方Demo提供的代码,个人觉得他们封装的不是很好,期望封装后,能实现支持关闭通话界面:类似微信那样,同时通话中邀请人加入,在群里界面能主动加入等。
  • 聊天界面表情和键盘切换会有跳动,可以参考这个两个开源项目(好像没有这问题):SmartKeyboardManagerMyEmjkeyBoard
  • 预览当前位置媒体文件,其他位置视频媒体会播放。
  • 重写图片选择框架,主要是重构代码,和布局,让功能更完善,界面更美观,扩展性更强,期望最后能单独开源。
  • 重构对话框功能,主要是重构代码,和布局,让功能更完善,界面更美观,扩展性更强,期望最后能单独开源。
  • 重构选择文件功能,主要是重构代码,和布局,让功能更完善,界面更美观,扩展性更强,期望最后能单独开源。
  • 重构群聊天界面,和我不相关的音视频通话消息,消息为加群那样的简单提示。
  • 重构项目,将大部分功能更改为更适合Jetpack规范的实现。
  • 内测泄露和性能优化:目前项目还有些地方有内存泄露,部分功能写法性能也不是很好。
  • 禁言后不能在转发消息到该会话。
  • 应用后台,如果应用被系统杀死,再返回,直接调用腾讯SDK会报错未登陆,需要腾讯SDK,但如果每次调用前都检查是否登录,会比较复杂,目前还没找到好的解决方法。
  • 如果是点击音视频通话通知进入启动界面,不要显示等待时间。

还未实现的功能

  • 转发消息时能预览消息,类似微信,QQ转发消息效果。
  • 播放语音消息时,实现类型微信,钉钉那样靠近耳朵时切换听筒播放。
  • 实现能从系统分享各种型类型消息到我们应用,类型微信,QQ等。
  • 集成其他厂商离线推送通话。
  • 支持转账,发送红包。
  • 实现类型微信公众号基础功能:例如:后台可以设置某个账号为公众号,然后可以配置菜单,并能自动做出一些回复。

期望最终效果

  • 除了第三方SDK无法实现,或者不好实现的功能外,其他功能都能使用,并且能稳定,达到可以上线运营的状态。
  • 后面还有用融云即时通讯服务/WebSocket单独实现两个版本。

用途

  • 学习,毕业设计,面试项目
  • 基于该项目上线运营,或者做外包,或者内部私有聊天(这个版本音视使用第三方SDK,无法使用部署,后面WebSocket实现的版本才能);交互请勿直接商用。

开发环境

Android客户端:Android Studio 4.1 + Kotlin 1.4 + Gradle 6.5

Spring Boot服务端:IntelliJ IDEA 2020 + Java 15 + Gradle 6.7

服务端数据库:MySQL,开发环境8.0 + 线上环境5.7

项目开发环境:macOS 11.2 + Java 15

核心知识点

Kotlin,Jetpack,MVVM,Flow,MVC,矢量图,Lifecycle,动态权限,Emoji,EventBus,高德地图,视频播放,Hilt依赖注入,内存泄漏检测和修复,腾讯即时通讯,腾讯实时音视频。