HitUp Messenger
一个功能齐全的聊天信使(类似Whatsapp),使用 Flutter 构建。
关于项目
- 使用 Flutter 构建 Android 和 iOS 应用。
- 使用 Firestore 数据库存储用户数据。
- 使用 Firebase Storage 存储图片。
- 使用 MQTT 作为消息协议,托管在 AWS EC2 上。
- 使用 SQLite 在本地数据库中存储联系人与聊天记录。
- 使用 OneSignal 进行推送通知。
功能
使用 MQTT 协议实现超快消息传递(Facebook Messenger 使用 MQTT)
架构
当您从应用发送消息时,消息首先发送到 MQTT 服务器。然后 MQTT 服务器直接将消息发送给应该接收它的客户端设备。接收到消息后,客户端首先将其存储在本地 SQLite 数据库中,然后显示在聊天屏幕上。(Firestore 绝不用于存储或发送文本消息。Firestore 仅用于存储用户和联系人数据)。要了解更多关于 MQTT 的信息,请 参考这里。
手机号码身份验证登录
身份验证使用 Firebase 完成。
发送图片
发送和接收图片(类似 Snapchat 的 UI)。
图片不存储在图库中。而是以字节格式存储在本地 SQLite 数据库中。
使用 SQLite 作为本地数据库存储消息,实现消息的超快加载
即使客户端离线,打开聊天屏幕时也可以查看消息,因为消息直接从本地 SQLite 数据库加载。这也是存储消息的唯一位置。MQTT 服务器不存储旧消息。MQTT 服务器仅存储最后发送的消息,并在发送新消息时替换它。
向手机联系人发送文本
在联系人屏幕上,您将看到所有也正在使用此信使的手机联系人列表,并可以与他们聊天。(就像在 Whatsapp 中向您的联系人发送消息一样)
通过用户名添加联系人。发送和接收好友请求
您还可以通过用户名向某人发送好友请求。发送好友请求后,对方将收到推送通知和好友请求。如果对方接受请求,您将收到通知,并且能够与该用户聊天。(与 Snapchat 中的功能相同)
屏蔽联系人
实时推送通知
使用 OneSignal。当用户收到新消息、好友请求或有人接受其好友请求时,即使应用已关闭,用户也将收到实时推送通知。
- 收到新消息
- 收到好友请求
- 有人接受其好友请求
更改个人资料照片
发送前进行图片压缩
表情符号支持
新拟态 UI
邀请好友功能
其他重要信息
安装和设置(可选)
- Firebase
要更改 Firestore 数据库,只需将 `android/app` 中的 `google-services.json` 文件替换为您 Firebase 账户中的 `google-services.json` 文件即可。
- MQTT 服务器
我使用一个托管在 AWS EC2 实例上的 MQTT 服务器来传输消息。有关如何设置您自己的 MQTT 服务器的详细信息,请参阅此处:在 AWS EC2 上设置 MQTT 服务器。然后,在 `lib/functions/MQTTFunction.dart` 文件中的 `connect()` 函数中,将 `serverAddress` 参数更改为您 EC2 实例的公共地址。
- OneSignal
首先在 OneSignal 上创建一个账户。然后,在 `lib/functions/UserDataFunction.dart` 文件中的 `sendNotification()` 函数中,将 `app_id` 参数替换为您自己的 OneSignal app_id。
动力与贡献
我希望将这个信使打造成网络上最大的开源信使,集 Whatsapp、Telegram、Signal、Snapchat 等顶级信使的所有功能于一身。还有很多功能待添加,如端到端加密、音频消息、音视频通话、动态等。因此,我们欢迎 Pull Request。请尽您所能做出贡献,添加新功能、查找或修复错误、完善文档、改进代码注释等。
贡献
如果您想以非编码方式为本项目做出贡献,请在此处联系我:[email protected]










