我想创建一个应用程序,就像使用 Firebase 的 Uber 一样。我不明白如何使用服装标记在谷歌地图上显示最近的应用程序用户,以及如何像优步一样同时向所有最近的应用程序用户发送请求。
1 回答
由于您已经在使用 Firebase,因此可以使用Firebase Cloud Messaging。这显然是一个相当大的功能,将涉及许多子任务,但这里有一个简化的概述:
你有三个玩家参与:
- “优步用户”客户端应用
- “优步司机”客户端应用
- 您的应用服务器(可能是Firebase Cloud Functions,用于无服务器后端)
数据流可能如下:
“司机”打开他们的应用程序。这将建立与服务器的连接,并使服务器不断更新其地理位置。
“用户”打开他的应用程序。这会触发向服务器发送用户地理位置的请求。
服务器(知道所有司机的实时位置)计算哪些司机在用户附近,并用这些数据响应用户请求。用户客户端应用程序现在可以使用驱动程序位置呈现地图小部件(为此,您可能会使用类似google_maps_flutter的包)。
用户单击按钮以请求乘车。这再次触发对服务器的请求。
服务器接收请求,并使用云消息通知附近的司机。FCM 有一种称为Data 消息的消息类型,它非常适合这种情况;您可以发送自定义数据,客户端应用程序将根据需要处理它。
司机的应用程序接收到此数据消息并呈现显示有可用乘车的 UI。如果司机接受乘车,这将向服务器发送请求。
一旦服务器看到“已接受乘车”请求,它就会向所有其他司机发送另一条消息,通知该乘车不再可用,并向用户发送一条消息,告知该乘车已被接受。
As I said, this is not a simple feature. There are several tricky parts, such as race conditions, and making sure only a single driver accepts a ride. But this should be a high-level overview of how it can be done.
Finally, this schema is a quite technology agnostic; it isn't specific to Flutter. The architecture to have that feature could be implemented like this in pretty much any modern mobile framework - Flutter is just a UI framework.