建立基于实时位置的聊天信息。
我建造了什么
结论
我建造了什么
这是一款移动应用,允许用户使用 Google 地图小部件分享位置信息。点击“分享位置”按钮后,包含用户当前位置的地图小部件会实时呈现给所有已连接的用户,并显示在中央聊天框中。为了识别每个用户的位置,我将提供的用户名放置在指向他们位置的地图标记上。
用处
好吧,我可能在那里做了很长的工作,但这对任何人有什么用呢?让我们设想这样一种情况:也许你的家人都注册了这款应用,你们可以实时分享位置信息。比如,如果有人在公园失踪,或者发生了绑架等其他严重事件,你只需点击一个按钮,它就会将你当前的位置广播给你家里的每一位成员,然后他们就能实时收到你的位置信息。就是这么简单。这也许没什么大不了的,但它确实是一个非常有用的工具。
演示链接
代码链接
我是如何建造它的
为了更好地解释我是如何构建这个应用程序的,我想先介绍一下它的工作原理。当应用程序启动时,它会显示一个输入框,用于username
获取特定用户的姓名。
提供用户名后,用户可以点击Share Location
屏幕上的按钮,该按钮会向我们的服务器发送请求,其中包含用户名及其当前经纬度。然后,服务器将响应用户的username
、longitude
和 ,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