构建一个基于位置的实时聊天信息流。我的构建总结

2025-06-08

建立基于实时位置的聊天信息。

我建造了什么

结论

我建造了什么

这是一款移动应用,允许用户使用 Google 地图小部件分享位置信息。点击“分享位置”按钮后,包含用户当前位置的地图小部件会实时呈现给所有已连接的用户,并显示在中央聊天框中。为了识别每个用户的位置,我将提供的用户名放置在指向他们位置的地图标记上。

谷歌图片

用处

好吧,我可能在那里做了很长的工作,但这对任何人有什么用呢?让我们设想这样一种情况:也许你的家人都注册了这款应用,你们可以实时分享位置信息。比如,如果有人在公园失踪,或者发生了绑架等其他严重事件,你只需点击一个按钮,它就会将你当前的位置广播给你家里的每一位成员,然后他们就能实时收到你的位置信息。就是这么简单。这也许没什么大不了的,但它确实是一个非常有用的工具。

演示链接

下载 apk 并试用该应用

代码链接

在 Github 上查看项目

我是如何建造它的

为了更好地解释我是如何构建这个应用程序的,我想先介绍一下它的工作原理。当应用程序启动时,它会显示一个输入框,用于username获取特定用户的姓名。

提供用户名后,用户可以点击Share Location屏幕上的按钮,该按钮会向我们的服务器发送请求,其中包含用户名及其当前经纬度。然后,服务器将响应用户的usernamelongitude和 ,latitude我们将使用该 、 和 创建一个 Google 地图小部件,并在用户当前位置放置一个图钉。

这会将用户提供的位置放置username在地图标记上。此小部件现在呈现在中央布局上,每个连接的用户都可以看到其他用户之前共享的位置。

如果你已经熟悉 Pusher,我敢打赌你已经能想象我是怎么做的了。但如果你还不熟悉,我会提供一些简短的解释,让你更清楚地理解它。

技术层面

这是一个用 Kotlin 构建的 Android 应用,用于监控 Node.js REST API 的活动。每次访问 API 的端点时,Pusher 都会将包含一些信息(例如用户共享的位置信息)的事件发布到频道。feed

首先,我创建了用于与我们的 REST API 通信的 Android 客户端。在客户端中,我定义了一个LoginActivity类和布局,用于处理用户在启动应用时提供用户名并登录到应用的操作,无需任何身份验证。

然后,为了将服务器上的用户位置小部件呈现到应用程序的中央布局中,我利用Recyclerview它让我可以访问adapter作为服务器和客户端之间的连接的类。

首先,为了将服务器的响应渲染到应用中的 viewHolders 中,我创建了一个模型类,作为定义内容结构的模式。之后,我在 Adapter 类中根据这个模型创建了一个数组列表,并用它来填充我的 recyclerview 对象。

为了向服务器发出请求并获取响应,我使用了retrofit。首先,我在项目中初始化了 Pusher,并在我的MainActivity类中进行了设置。然后,使用 Retrofit,我可以轻松地向服务器发送一个包含用户提供的用户名、经度和纬度的请求,并获取响应,即一个包含用户当前位置(经度、纬度和用户名)的 JSONObject。

然后,我将这个响应传递给 Adapter,并将其显示在我为其建模的布局文件中。最后,我将包含数据的布局文件渲染到 RecyclerView 上。

然后在服务器端,
首先我创建了一个 Node.js 服务器,并使用我的推送器凭据对其进行了配置,这样每当到达我们的 API 端点时,我们就会将事件发布到 Pusher 通道feed。然后将响应作为对象发回,以便我们可以在客户端的活动 feed 中显示它。

推送器事件有一个eventChannel,它允许它们与特定主题相关,一个eventName用于识别事件类型的 ,以及一个payload,您可以将任何其他信息附加到它并发送回客户端。

在我的例子中,当我的 API 端点被调用时,我会向 Pusher 通道发布一个事件feed。然后将响应以对象的形式发送回去,并将数据传入我的 Adapter 并显示出来。

结论

就这样吧,伙计们。希望以后有人能扩展这个应用,打造出更精彩的作品。这个项目可以在 Github 上找到,我也提供了 apk 的下载链接。如果你有安卓设备,可以下载试试。最后,在退出之前,点击心形图标。

鏂囩珷鏉ユ簮锛�https://dev.to/ekeneeze/realtime-location-based-chat-feeds-5a29
PREV
使用 Hook 实现 React 组件生命周期
NEXT
建立我的个人网站 – 第 1 部分:规划和设计