如何构建地理位置感知,基于位置的Android约会应用程序
超过三分之一的人选择在线创建有意义的关系,因此像Tinder和Bumble这样的即时满足驱动的约会应用程序已经蓬勃发展。这让我思考 – 从头开始构建一个地理感知移动约会应用程序有多难?事实证明,借助微服务和无服务器设计模式,由实时网络支持,它并不那么难。
在本教程中,我们将介绍构建移动,地理感知约会应用程序的两个非常重要的部分 – 地理定位和滑动。
向Dan致敬
约会应用程序的微服务架构
让我们来介绍我们的应用程序流程,并快速概述我们将构建的内容。为了让事情变得简单,当我说用户我指的是打开Android应用程序的人时,当我说伙伴时,我指的是打开应用程序的每个其他用户。
我们知道我们需要找到除用户之外的所有合作伙伴,我们还需要知道他们的位置。这意味着每个设备都需要共享一个唯一的ID及其位置。接下来,我们需要每个设备能够检查彼此的设备,同时还将自己添加到列表或更新其当前位置。一旦用户将自己添加到合作伙伴列表中,我们就可以从列表中选择每个其他用户并检查他们与当前用户的距离。
这意味着我们可以将整个系统分为三个部分:
Android应用程序
实际的Android应用程序,它使用位置发送自己的唯一ID,并接收其他用户的ID和位置。
保存并过滤
此部分从Android应用程序中提取数据,并返回不是调用该服务的每个用户的位置和唯一ID。
计算距离
这将使用户获得他们的位置以及另一个用户的位置并吐回距离。有一些数学因为我们将计算两个纬度和经度距离之间的距离。此服务将返回唯一用户和距离。
创建微服务
为了简化和高效,我们需要找到一个提供程序来运行我们的微服务。为此,我们将使用PubNub函数。
您首先必须使用下面的嵌入表单注册帐户。之后,转到Admin Dashboard并启用Functions功能。
这将让我们构建Save和Filter功能,以及PubNub上的Calculate Distance微服务,并为我们提供我们想要的实时,可扩展的体验。
实时保存和过滤用户
我们的客户端应用程序将当前用户的ID和位置发布到无服务器的PubNub函数,该函数将位置保存到名为PubNub KV Store的密钥集范围的持久存储中。
从那里,我们的第一个功能将检查KV商店中每个项目的当前ID,并将其附加到用户列表。获得完整列表后,我们会将该消息发布回使用其ID的设备唯一的通道。
注意:PubNub函数允许每个函数调用最多3个请求。
实时计算距离
我们将以数组的形式获取数据。数组的前两个元素是用户的ID,后两个元素是发起请求的用户的位置。第一个元素是发起者的ID,第二个元素是可能的滑动候选者。完成计算后,我们将发送唯一用户的ID以及它们与启动器的距离。
此函数的结果如下所示:
{“ID”:“唯一身份用户ID”,“距离”:5}
如何在Android应用上滑动用户
首先,创建一个检查了Kotlin支持的空Android Studio项目。
接下来,查看我们要添加到应用级Gradle文件的依赖项,以确保我们的应用程序顺利运行。
第一个依赖是PubNub SDK,它将帮助我们发布和订阅我们刚刚创建的逻辑。与PubNub SDK相关,我们还需要发布和订阅密钥。您可以通过下面的快速设置获取您的发布和订阅密钥。
所需的其他依赖项是针对我们应用程序的可视组件 – 滑动功能。
创建用户界面
首先,我们将调整我们的activity_main.xml,以适应我们在MainActivity.kt文件中初始化的滑动功能。
接下来,我们将创建每个配置文件卡的UI以及每个配置文件的覆盖,同时考虑用户是向左还是向右滑动。
这就是用户界面,现在让我们覆盖后端。
集成应用程序逻辑
为了使我们的应用程序完整,我们将创建四个单独的文件。我们需要的第一个文件是一个类,它将作为每个配置文件的对象,并包含相关信息。
接下来,我们将创建一个具有一些帮助函数的文件来更新我们的配置文件集合。
现在,我们可以将每个配置文件加载到前端。我们将在名为CardStackAdapter的类中执行此操作。
将所有东西拼接在一起
我们可以转到MainActivity.kt文件,看看所有内容是如何组合在一起的。
让我们快速浏览一下onCreate和onStart方法。
我们可以将发生的所有事情分解为三件事。
首先,我们将使用Fused Location获取设备的位置。接下来,我们将订阅一个与我们的设备ID同名的频道,因为我们可以刷卡的所有可能的人都会发布到该频道。最后,在onStart中,我们将发布与设备相关的日期,就像ID和位置一样。我们在onStart而不是onCreate上发布的原因是因为在活动开始之前我们无法获取发布所需的所有信息。
有了它,让我们在MainActivity中添加所有功能并使用您的pub / sub键(它们位于您的Admin Dashboard中)。最后,我们的文件将如下所示:
让我们运行应用程序在模拟器或设备上,您可以看到滑动功能以及用户与您的距离。
干得好想要探索有关移动约会应用的更多功能和想法?查看我们的实时约会应用程序概述,了解如何使用PubNub的聊天API和消息传递基础架构为全球范围内的跨平台,快速和安全的约会应用程序提供支持。
最初发表于www.pubnub.com。