如何構建地理位置感知,基於位置的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。