发现一个应用程序(iPhone和Android)附近的用户

21

我正在开发一款既有 iPhone 版本又有 Android 版本的应用程序。

我的目标是...

  • 在我的应用程序中显示一个附近用户列表(包括 iPhone 应用程序用户和 Android 应用程序用户)。假设这个列表显示了在 1 英里或 2 英里半径内并且正在使用我的应用程序的所有用户。
  • 这个列表将在 iPhone 和 Android 应用程序上同时显示。
  • 当用户点击刷新按钮时,应用程序将更新列表。

我的问题是...

  • 实现上述目标的最佳方法是什么?我需要定期从他们的 Droids 和 iPhones 发送所有应用程序用户当前的 GPS 位置到我们的 Web 服务器吗?

为了让我的问题更加清晰明了...

  • 我有一个算法来查找给定范围内的地点/用户(如 1 英里或 2 英里半径等),因此请不要告诉我如何查找给定范围内的用户。
  • 我知道如何获取 iPhone 和 Droid 设备的当前位置,所以请不要告诉我如何获取 iPhone 或 Android 设备的更新位置。
  • 我知道这是一个隐私问题。因此,应用程序将要求用户允许将他们的位置发送到我们的 Web 服务器,所以请不要告诉我用户或 Apple 可能会有的隐私问题。
  • 只需要告诉我如何在 Web 服务器上最佳地维护应用程序用户的地理位置更新列表?最好、经过验证的方法!
  • 如果我的问题还需要澄清,请让我知道。

谢谢并致以最好的问候


Atif,你能给我提个最好的方法吗?我现在需要在我的一个应用程序中实现这个。 - Imran
嘿,你解决了怎么做的问题吗?我是移动应用程序开发的初学者,想要实现相同的功能。 - Mohit Shah
你能否就寻找应用程序最接近的用户算法提供建议?我一直在尝试制作,但它们都很耗费资源。你能否建议一下使用什么算法? - Firaun
4个回答

7
今天在创建类似应用程序时,我也有这个问题。这里是问题链接:Alert when two users/friends are near to each other - Android Proximity
经过几个小时的思考,我想到了更好的方法:
1)创建一个共享偏好设置/数据库,保存设备的最后坐标,并将其更新到服务器。
2)创建一个服务,每15分钟触发一次请求当前位置。
3)如果当前位置与从共享偏好设置中检索到的上一个位置匹配,并且在接近范围内(取决于您提供的距离,例如30英尺或更多),则用户在同一位置,因此不需要将坐标上传到服务器。
4)如果用户不在接近范围内或上一个位置与当前位置不匹配,则将坐标上传到服务器。
5)上传坐标到服务器后,也要更新共享偏好设置。
6)上传后,从服务器返回与相同坐标附近的用户详细信息的响应。然后用户将得到通知是否有人在他们周围。

2
你如何实现第六步?前面的步骤1到5都相当简单。 - sweepez

3
每次更新都会消耗电池和数据。如果您这样做太多,一定会因为资源占用过多而惹恼用户。
我建议创建一个服务,定期调用该服务来更新用户在服务器上的位置,并从Web服务器获取附近用户列表。更新频率应取决于用户在上次更新时的移动速度。如果他们没有移动,则每15分钟更新一次即可,如果他们以汽车速度行驶,则需要更频繁地更新。
为了在Web服务器上存储用户位置,我建议使用专门构建的GIS包,它实际上了解位置坐标是什么。大多数数据库都内置了此类功能。然后,当应用程序请求附近用户列表时,应用程序只需要接收实际附近的用户,其他用户可以被忽略,从而节省一些数据和在手机上进行距离计算的工作。

非常有帮助的JeffS...我们正在使用C#构建我们的Web服务器应用程序。我不熟悉GIS包。你能再帮我解释一下吗?我们如何在MS SQL Server中使用GIS包?MS SQL Server是否内置了这样的支持? - Atif Azad
我对MS世界的服务器端了解甚少,但我相信SQL Server 2008具备地理空间能力,这将是一个不错的起点。 - JeffS

2

请考虑以下可能存在的问题:

  1. 如果应用程序一直发送用户位置,则用户电池电量将减少,Web服务器内存将增加。

  2. 应用程序将继续使用Internet向Web服务器发送位置。

  3. 在漫游时,互联网数据费用可能会增加。

我的建议:

  1. 该应用程序应每15分钟发送一次用户位置。

  2. 每个应用程序都应使用唯一ID更新其位置。

  3. 如果应用程序关闭,则在Web服务器中清除该应用程序的位置。


谢谢你的建议!但是如果你在开车,你的位置会快速变化。每15分钟更新一次将无法帮助用户找到附近的其他人。我想要更快的更新,更实时的位置数据。在这种情况下如何高效地处理?我意识到以如此快的速度更新服务器会产生一定的问题,正如你自己也提到的那样。事实上,这就是我发布这个问题的主要原因。 - Atif Azad

-2
你还应该看看Scringo。它是一个拥有该功能的SDK和服务(查找附近您应用程序的用户并在地图上显示等等...)。

似乎链接已损坏 :( - Jethro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接