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

Posted

技术标签:

【中文标题】我如何向最近的应用程序用户发送请求,就像颤动中的优步一样【英文标题】:How I can send request to the nearest app user just like Uber in flutter 【发布时间】:2021-02-09 23:02:59 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

你有三个玩家参与:

    “优步用户”客户端应用 “优步司机”客户端应用 您的应用服务器(可以是 Firebase Cloud Functions,对于无服务器后端)

数据流可能如下:

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

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

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

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

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

    司机的应用程序接收到此数据消息并呈现显示有可用乘车的 UI。如果司机接受乘车,这会向服务器发送一个请求。

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

正如我所说,这不是一个简单的功能。有几个棘手的部分,例如比赛条件,并确保只有一个司机接受骑行。但这应该是如何做到这一点的高级概述。

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

【讨论】:

以上是关于我如何向最近的应用程序用户发送请求,就像颤动中的优步一样的主要内容,如果未能解决你的问题,请参考以下文章

如何让服务器知道根据指纹颤动发送哪些数据?

如何中止使用 wininet 发送的请求?

同桌选择好友请求

如何在颤动的多部分请求中发送对象列表?

如何在颤动的 POST 请求中将 Map 作为字符串发送?

如何在颤动中绘制带有图像和文本的卡片列表