猿匹配,一款使用环信实现的一个开源聊天应用含服务器

前言

之前写了一篇Android开发集成聊天环信SDK3.x简单开始,然后最近得空开发了一款使用环信实现的实时聊天应用,包含简单的服务器端,并开源给大家,有兴趣的同学可以一起搞一下,详细介绍看下边吧

上代码

服务器:VMServer
客户端:VMMatch

VMMatch

猿匹配 —— 国内首个程序猿非严肃婚恋交友应用,让我们一言不合就来场匹配吧?

介绍

首先说下中文名:为什么叫这个名字呢,因为这是一个程序猿(媛)之间匹配交流的应用啊?

其实这是一个使用环信 IM 开发的一款开源聊天项目,涵盖了时下流行的一些聊天元素,同时已将 IM 功能封装为单独库,可以直接引用,方便使用

项目还处在初期阶段,还有许多功能需要实现,有兴趣的可以一起来

项目资源均来自于互联网,如果有侵权请联系我

下载体验

安装包下载 >> Github >>

猿匹配 Google Play

项目截图

匹配match_main02.png-v512uploading.gif转存失败重新上传取消匹配match_main03.png-v512uploading.gif转存失败重新上传取消匹配
匹配match_chat02.png-v512uploading.gif转存失败重新上传取消匹配匹配
匹配匹配匹配
match_settings01.png-v512uploading.gif转存失败重新上传取消匹配匹配

开发环境

项目基本属于在最新的Android开发环境下开发,使用Java8的一些新特性,比如Lambda表达式,
然后项目已经适配Android6.x以上的动态权限适配,以及7.x的文件选择,和8.x的通知提醒等;

  • Mac OS 10.14.4
  • Android Studio 3.3.2

项目模块儿

本项目包含两部分:

  • 一部分是项目主模块app,这部分主要包含了项目的业务逻辑,比如匹配、信息修改、设置等
  • 另一部分是封装成libraryvmim,这是为了方便大家引用到自己的项目中做的一步封装,不用再去复杂的复制代码和资源等,
    只需要将vmimmodule导入到自己的项目中就行了,具体使用方式参见项目app模块儿;

功能与 TODO

IM部分功能

  • [x] 链接监听
  • [x] 登录注册
  • [x] 会话功能
    • [x] 置顶
    • [x] 标为未读
    • [x] 删除与清空
    • [x] 草稿功能
  • [x] 消息功能
    • [x] 下拉加载更多
    • [x] 消息复制(仅文字类消息)
    • [x] 消息删除
    • [x] 文本+Emoji消息收发
    • [x] 大表情消息收发
    • [x] 图片消息
      • [x] 查看大图
      • [ ] 保存图片
    • [x] 语音消息
      • [x] 语音录制
      • [x] 语音播放(可暂停,波形待优化)
      • [x] 听筒和扬声器播放切换
    • [x] 语音实时通话功能
    • [x] 视频实时通话功能
    • [x] 通话过程中的娱乐消息收发
      • [x] 骰子
      • [x] 石头剪刀布
      • [x] 大表情
    • [x] 昵称头像处理(通过回调实现)

App部分功能

  • [x] 登录注册(包括业务逻辑和 IM 逻辑)
  • [x] 匹配
    • [x] 提交匹配信息
    • [x] 拉取匹配信息
  • [x] 聊天(这里直接加载 IM 模块儿)
  • [x] 我的
    • [x] 个人信息展示
    • [x] 上传头像
    • [x] 设置昵称
    • [x] 设置签名
  • [x] 设置
    • [x] 个人信息设置
    • [x] 通知提醒
    • [x] 聊天
    • [ ] 隐私(随业务部分一起完善)
    • [ ] 通用(随业务部分一起完善)
    • [ ] 帮助反馈(随业务部分一起完善)
    • [x] 关于
    • [x] 退出
  • [ ] 社区
    • [ ] 发布
    • [ ] 评论
    • [ ] 收藏
    • [ ] 关注

发布功能

  • [x] 多渠道打包
  • [x] 签名配置
  • [x] 开发与线上环境配置
  • [x] 敏感信息保护

配置运行

  1. 首先复制config.default.gradleconfig.gradle
  2. 配置下config.gradle环信appkey以及bugly统计Id
  3. 正式打包需要配置下签名信息,同时将签名文件放置在项目根目录

参与贡献

如果你有什么好的想法,或者好的实现,可以通过下边的步骤参与进来,让我们一起把这个项目做得更好,欢迎参与 ?

  1. Fork本仓库
  2. 新建feature_xxx分支 (单独创建一个实现你自己想法的分支)
  3. 提交代码
  4. 新建Pull Request
  5. 等待我们的Review & Merge

关联项目

服务器端由nodejs实现,地址见这里 VMServer

VMServer

是为Android开源项目VMMatch项目(中文名猿匹配)实现的服务端

简介

这个项目包含两部分

  • 根目录:服务逻辑及API接口实现
  • client目录:前端界面,和服务器端代码端放置在同一仓库下(暂未实现)

使用

简单介绍下运行环境及部署方法

  1. 安装nodejs开发时使用的是v10.16.0版本
  2. 需要安装mongodb并启动,开发使用版本4.0.10
  3. 下载项目到服务器,可以下载压缩包,或者用git clone命令
  4. 复制config_default.jsconfig.js,可根据自己需要修改配置文件
  5. 安装依赖
npm install
  1. 全局安装pm2
npm install pm2 -g
  1. 运行 vmshell.sh

加群交流(QQ群:901211985)

QQ 交流群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/609117.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《计及全生命周期成本的公交光伏充电站储能优化配置方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

清华团队开发首个AI医院小镇模拟系统;阿里云发布通义千问 2.5:超越GPT-4能力;Mistral AI估值飙升至60亿美元

🦉 AI新闻 🚀 清华团队开发首个AI医院小镇模拟系统 摘要:来自清华的研究团队最近开发出了一种创新的模拟系统,名为"Agent Hospital",该系统能够完全模拟医患看病的全流程,其中包括分诊、挂号、…

【八十五】【算法分析与设计】单调栈的全新版本,两个循环维护左小于和右小于信息,84. 柱状图中最大的矩形,85. 最大矩形

84. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights [2,1,5,6,2,3] 输出:10 解释&am…

Go的安装与配置

安装 https://go.dev/dl/ 以Windows上安装为例: 下一步下一步,记住安装位置 安装完成后 win rcmd 键入go version检查是否安装成功 配置 Go 工作区 Go 在组织项目文件方面与其他编程语言不同。 Go 是在工作区的概念下工作的。但是从版本 1.11 开始&…

docker-compose部署java项目

docker-compose是定义和运行多容器的工具。换句话说就是通过配置yml文件来运行容器,简化了每次输入docker run等命令,把这些命令配置在yml文件统一管理,而且可以用一个yml文件一次启动多个容器,启动时还可以设置各个容器的依赖关系…

远程开机与远程唤醒BIOS设置

远程开机与远程唤醒BIOS设置 在现代计算机应用中,远程管理和控制已成为许多企业和个人的基本需求。其中,远程开机和远程唤醒是两项非常实用的功能。要实现这些功能,通常需要在计算机的BIOS中进行一些特定的设置。以下是对远程开机和远程唤醒…

如何判断nat网络?如何内网穿透

大家都清楚,如果你想开车,就必须要给车上一个牌照,随着车辆越来越多,为了缓解拥堵,就需要摇号,随着摇号的人数越来越多,车牌对于想开车的人来说已经成为奢望。在如今的IPv4时代,我们…

全自动减压器法二氧化碳气容量测试仪:饮料行业的革新与未来

全自动减压器法二氧化碳气容量测试仪:饮料行业的革新与未来 一、引言 在追求品质与效率的现代饮料生产领域,全自动减压器法二氧化碳气容量测试仪凭借其高精度、高效率及无人工干预的显著优势,正逐渐成为行业的标杆。特别是在碳酸饮料的生产中…

USB系列五:USB设备配置(重要)

在USB总线接口协议中,对于USB外部设备功能特征是通过端点(Endpoint)、配置(Configuration)和接口(Interface)来描述的,这些就是典型的USB描述符。 USB主机通过设备请求来读取外部设…

并行执行线程资源管理方式——《OceanBase 并行执行》系列 3

在某些特定场景下,由于需要等待线程资源,并行查询会遇到排队等待的情况。本篇博客将介绍如何管理并行执行线程资源,以解决这种问题。 《OceanBase并行执行》系列的内容分为七篇博客,本篇是其中的第三篇。前2篇如下: 一…

分布式与一致性协议之Quorum NWR算法

Quorum NWR算法 概述 不知道你在工作中有没有遇到过这样的事情:你开发实现了一套AP型分布式系统,实现了最终一致性,且业务接入后运行正常,一切看起来都那么美好。 可是突然有同事说,我们要拉这几个业务的数据做实时分析&#xf…

AXI4读时序在AXI Block RAM (BRAM) IP核中的应用

在本文中将展示描述了AXI从设备(slave)AXI BRAM Controller IP核与Xilinx AXI Interconnect之间的读时序关系。 1 Single Read 图1展示了一个从32位BRAM(Block RAM)进行AXI单次读取操作的时序示例。 图1 AXI 单次读时序图 在该…

webpack如何自定义一个loader

我们在使用脚手架的搭建项目的时候往往都会帮我们配置好所需的loader,接下来讲一下我们要如何自己写一个loader应用到项目中(完整代码在最后) 1. 首先搭建一个项目并找到webpack配置文件(webpack.config.js) 在modul…

clickhouse学习笔记06

ClickHouse的建表和引擎选择思路讲解 ClickHouse的常见注意事项和异常问题排查 ClickHouse高性能查询原因剖析-稀疏索引 ClickHouse高性能写入剖析-LSM-Tree存储结构

嵌入式开发十:STM32开发基础入门知识补充

本篇博客主要是针对前面STM32入门基础知识的补充,为后面的真正开发学习做好准备。 目录 一、IO 引脚复用器和映射 1.1 引脚复用的概念 1.2 如何设计实现复用 1.3 复用功能固件库配置过程 二、STM32 NVIC 中断优先级管理 2.1 NVIC中断优先级管理结构体介绍 …

力扣每日一题-统计已测试设备-2024.5.10

力扣题目:统计已测试设备 题目链接: 2960.统计已测试设备 题目描述 代码思路 根据题目内容,第一感是根据题目模拟整个过程,在每一步中修改所有设备的电量百分比。但稍加思索,发现可以利用已测试设备的数量作为需要减少的设备电…

16地标准化企业申请!安徽省工业和信息化领域标准化示范企业申报条件

安徽省工业和信息化领域标准化示范企业申报条件有哪些?合肥市 、黄山市 、芜湖市、马鞍山、安庆市、淮南市、阜阳市、淮北市、铜陵市、亳州市、宣城市、蚌埠市、六安市 、滁州市 、池州市、宿州市企业申报安徽省工业和信息化领域标准化示范企业有不明白的可在下文了…

机器学习各个算法的优缺点!(上篇) 建议收藏。

下篇地址:机器学习各个算法的优缺点!(下篇) 建议收藏。-CSDN博客 今天有朋友聊起来,机器学习算法繁多,各个算法有各个算法的特点。 以及在不同场景下,不同算法模型能够发挥各自的优点。 今天…

Java之异常处理

一、认识异常 1.异常的概念 在 Java 中,将程序执行过程中发生的不正常行为称为异常。。比如之前写代码时经常遇到的: 1. 算术异常 System.out.println(10 / 0); // 执行结果 Exception in thread "main" java.lang.ArithmeticException: /…

深化产教融合,泰迪智能科技助力西南林业大学提质培优

2024年5月7日,泰迪智能科技昆明分公司院校部总监查良红和数据部负责人余雄亮赴西南林业大学理学院就工作室共建事宜进行交流会谈。西南林业大学理学院院长张雁、党委副书记魏轶、副院长谢爽、就业负责人罗丽及学生代表参与本次交流会。 会议伊始,谢副院长…