微信聊天项目
2023-04-18 15:54:54 时间
效果图
登录/会话界面/通讯录/聊天界面/自定义表情/更多界面
群聊详情/好友详情/添加朋友/发送位置
深色模式/音视频通话界面
已有功能
- 登录注册,退出
- 更改用户昵称,头像
- 添加好友,群
- 发送消息:支持文本,图片,视频,文件,Emoji,大表情,位置,语音
- 支持单聊,群聊音视频通话
- 群聊功能:创建群聊,解散群聊,更改群聊资料,设置禁言,设置管理员,邀请/移除成员,设置群名片
- 消息离线推送:目前集成了小米推送
- 转发消息:因为SDK不支持,目前只能转发文本消息
- 引用消息:因为SDK不支持,目前只能引用文本消息
- 全局搜索:因为SDK不知道,目前只能本地搜索我添加的好友,添加的群聊
- 二维码:显示我的,好友,群聊二维码,并支持扫描二维码
- 其他聊天功能:会话置顶,会话免打扰(因为SDK不支持,单聊离线消息无效),标记未读,设置聊天界面背景
- 统计服务:集成了Umeng,支持总用户,活跃,崩溃统计
- 其他功能:文件预览,深色模式
已经实现的功能
- 重构音视频通话封装:目前封装用的官方Demo提供的代码,个人觉得他们封装的不是很好,期望封装后,能实现支持关闭通话界面:类似微信那样,同时通话中邀请人加入,在群里界面能主动加入等。
- 聊天界面表情和键盘切换会有跳动,可以参考这个两个开源项目(好像没有这问题):SmartKeyboardManager,MyEmjkeyBoard。
- 预览当前位置媒体文件,其他位置视频媒体会播放。
- 重写图片选择框架,主要是重构代码,和布局,让功能更完善,界面更美观,扩展性更强,期望最后能单独开源。
- 重构对话框功能,主要是重构代码,和布局,让功能更完善,界面更美观,扩展性更强,期望最后能单独开源。
- 重构选择文件功能,主要是重构代码,和布局,让功能更完善,界面更美观,扩展性更强,期望最后能单独开源。
- 重构群聊天界面,和我不相关的音视频通话消息,消息为加群那样的简单提示。
- 重构项目,将大部分功能更改为更适合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依赖注入,内存泄漏检测和修复,腾讯即时通讯,腾讯实时音视频。
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击