Flutter 团队群聊应用,集成 Firebase

一个完整的 Flutter 团队群聊应用,集成了 Firebase,支持视频通话。它处理输入、已接收和已读指示器、团队管理、应用关闭和打开通知、安全性、账户创建、登录、生成 Agora UID 的互斥锁等等。

  • Firebase Cloud Messaging (FCM) 用于在用户发送新消息或加入视频通话时发送推送通知。
  • Firebase Cloud Functions:后端处理 Agora 令牌请求,以便用户可以加入通话。它还在 Firestore 文档更改时运行触发器,例如创建新消息时发送推送通知。
  • 视频通话由 Agora 处理,使用 agora_rtc_engine 包处理视频通话,使用 agora_uikit 处理视频通话屏幕布局。
  • Firestore 安全规则:firestore.rules 文件包含规则,例如:只有管理员才能将用户添加到团队,用户只能查看其他用户的公开数据等。
  • Firestore 索引:firestore.indexes.json 文件包含 Firestore 索引。

? 点击此处打开视频

Android iOS Web
视频通话
所有其他功能

入门

步骤 1

要开始,请在 flutter_app 文件夹中打开终端。

前往您的 Firebase 项目 > 点击“项目概览”旁边的“引擎”⚙️ 按钮 > 复制您的项目 ID。按照将 Firebase 添加到您的 Flutter 应用的说明操作,并在 flutter_app 文件夹内运行以下两个命令,将 paste-your-project-id-here 替换为您自己的项目 ID。

dart pub global activate flutterfire_cli
flutterfire configure --project=paste-your-project-id-here

前往您的 Firebase 控制台 > 构建 > 身份验证 > 开始 > 登录方式 > 电子邮件/密码,然后启用电子邮件/密码并保存。

前往您的 Firebase 控制台 > 构建 > Firestore 数据库 > 创建数据库。您可以选择任何选项(在生产模式下开始在测试模式下开始),这并不重要,因为我们将在后续步骤中更新安全规则。

第 2 步:推送通知(可选)

iOS 和 Web 平台需要为 Firebase Cloud Messaging (FCM) 进行额外配置,以便在用户收到新文本消息时显示推送通知。

iOS

请遵循 iOS 上的这些说明.

Web

Web 需要 **vapidKey**。

  1. 在 Firebase 控制台中获取您的 vapidKey,您可以查看此处的说明。
  2. 转到文件 flutter_app/lib/core/domain/services/notifications_service.dart
  3. _vapidKeyForWeb 的值替换为您自己的 vapidKey

web/environment 文件中设置环境

  1. flutter_app/lib/firebase_options.dart 文件中的 web 字段复制值
  2. 将值粘贴到 flutter_app/web/environment.js 文件中

第 3 步:视频通话(可选)

支持的平台

  1. 创建您的 Agora 账户,前往项目页面并点击“创建项目”
  2. 在“身份验证”下选择安全模式:APP ID + Token(推荐)选项
  3. 复制 **App ID** 值并保存在您的记事本中,以便稍后使用
  4. 点击“配置”
  5. 在“应用证书”下,也复制主要证书
  6. 转到 functions/environment.ts 并设置 Agora App ID 和 App Certificate。
  7. 转到 flutter_app/lib/environment.dart 并仅在此处设置 Agora App ID。

⚠️ 请勿泄露您的应用证书

第 4 步:部署

  • 运行 npm install -g firebase-tools 来安装 Firebase CLI
  • 运行 firebase use --add 并选择您的 Firebase 项目,添加您喜欢的任何别名
  • 可选:如果您不想部署到 Web,请转到 firebase.json 文件并删除 hosting 对象
  • 最后,运行 firebase deploy,这样就可以更新 Firestore 安全规则,创建云函数和索引。

联系我们

欢迎就以下问题在 GitHub 上打开 issue:

  • ? 问题

  • ? 建议

  • ? 潜在的错误

许可证

MIT

联系我

? [email protected]

GitHub

查看 Github