我如何将请求发送给最近的应用程序用户就像Uber一样

问题描述

我想使用Firebase像Uber一样创建一个应用程序。我不了解如何使用服装标记在Google地图上显示最近的应用程序用户,以及如何像Uber一样将请求同时发送给所有最近的应用程序用户

解决方法

由于您已经在使用Firebase,因此可以使用Firebase Cloud Messaging。显然,这是一个相当大的功能,它将包含许多子任务,但是下面是它的简化概述:

您涉及到三个玩家:

  1. “ Uber用户”客户端应用
  2. “ Uber驱动程序”客户端应用程序
  3. 您的应用服务器(对于无服务器后端,可以为Firebase Cloud Functions

数据流可能如下:

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

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

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

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

  5. 服务器接收到请求,并使用Cloud Messaging通知附近的驱动程序。 FCM具有一种称为Data message的消息类型,非常适合于此。您可以发送自定义数据,客户端应用程序将根据需要对其进行处理。

  6. 驾驶员的应用程序会收到此数据消息,并渲染UI,显示有可用的乘车路线。如果驾驶员接受乘车,则会向服务器发送请求。

  7. 一旦服务器看到“接受的乘车”请求,它将向所有其他驾驶员发送另一条消息,通知该乘车不再可用,并向用户发送一条消息,告知该乘车已被接受。 / p>

正如我所说,这不是一个简单的功能。有几个棘手的部分,例如比赛条件,并确保只有一个驾驶员可以接受骑行。但这应该是如何完成它的高级概述。

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