我如何像优步一样向最近的应用程序用户发送请求

How I can send request to the nearest app user just like Uber in flutter

我想使用 Firebase 创建一个类似于 Uber 的应用程序。我不明白如何使用服装标记在 google 地图上显示最近的应用程序用户,以及如何像 Uber 一样同时向所有最近的应用程序用户发送请求。

由于您已经在使用 Firebase,因此可以使用 Firebase Cloud Messaging。这显然是一个相当大的功能,将涉及很多 sub-tasks,但这里有一个简单的概述:

您涉及三名玩家:

  1. “优步用户”客户端应用程序
  2. “优步 driver”客户端应用程序
  3. 您的应用服务器(对于无服务器后端,可以是 Firebase Cloud Functions

数据流如下:

  1. “司机”打开他们的应用程序。这会与服务器建立连接,并使服务器不断更新其地理位置。

  2. 一位“用户”打开了他的应用程序。这会触发向服务器发送用户地理位置的请求。

  3. 服务器(知道所有 driver 的实时位置)计算哪些 driver 靠近用户,并用此数据响应用户请求。用户客户端应用程序现在可以呈现具有 drivers 个位置的地图小部件(为此,您可能会使用像 google_maps_flutter 这样的包)。

  4. 用户单击按钮请求乘车。这再次触发对服务器的请求。

  5. 服务器收到请求,并使用云消息通知附近的drivers。 FCM 有一个名为 Data message 的消息类型,非常适合这种情况;您可以发送自定义数据,客户端应用程序将根据需要进行处理。

  6. drivers 的应用程序收到此数据消息并呈现 UI 显示有可用的行程。如果 driver 接受乘车,则会向服务器发送请求。

  7. 一旦服务器看到“接受乘车”请求,它会向所有其他 driver 发送另一条消息,通知该乘车不再可用,并向用户通知乘车已被接受。

正如我所说,这不是一个简单的功能。有几个棘手的部分,例如比赛条件,并确保只有一个 driver 接受乘车。但这应该是如何完成的 high-level 概述。

最后,这个模式与技术完全无关;它不是特定于 Flutter 的。几乎任何现代移动框架都可以像这样实现具有该功能的架构——Flutter 只是一个 UI 框架。