查找应用的附近用户(iPhone和Android)

时间:2011-10-21 10:24:29

标签: android iphone geolocation gps gps-time

我正在开发一款拥有iPhone版和Android版的应用。

我的目标是......

  • 显示我的应用的附近用户列表(iPhone应用用户和Android应用用户)。让我们说一个列表用户目前在1英里或2英里半径范围内,目前正在使用我的应用程序。
  • 此列表将同时显示在应用程序,iPhone应用程序和Android应用程序上。
  • 应用会在用户点击“刷新”按钮时更新列表。

我的问题是......

  • 达到上述目标的最佳方法是什么?我是否需要定期将所有应用用户的GPS位置从他们的机器人和iPhone发送到我们的网络服务器?

让我的问题更清楚......

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

谢谢和最好的问候

4 个答案:

答案 0 :(得分:7)

即使我今天在创建类似的应用程序时也有这个问题。 Alert when two users/friends are near to each other - Android Proximity

经过几个小时的思考后,我想到了一个更好的方法:

1)创建SharedPreference / DB,其中包含已更新到服务器的设备的最后一个坐标。

2)创建服务,该服务将在15分钟内触发一次,请求当前位置。

3)如果当前位置与从SharedPreference检索到的最后位置匹配,或者在邻近范围内(取决于您提供30英尺或更多的数量),则用户位于同一位置所以不要上传服务器的坐标。

4)如果用户不在附近或最后位置与当前位置不匹配,则将坐标上传到服务器。

5)将坐标上传到服务器后,也要更新SharedPreference ..

6)上传后,从相同坐标附近的服务器返回用户详细信息的响应。如果周围有人,用户将收到通知..

答案 1 :(得分:3)

您所做的每次更新都会耗费电量和数据。如果你做得太多,你肯定会因为资源匮乏而烦扰用户。

我建议创建一个定期调用的服务,更新用户在服务器上的位置,并从Web服务器获取附近用户的列表。更新频率应取决于用户在上次更新期间的旅行速度。如果他们没有移动,15分钟可能没问题,如果他们以车速行驶,往往是必要的。

为了在Web服务器上存储用户位置,我建议使用专门构建的GIS包,它实际上了解位置坐标是什么。大多数数据库都内置了这样的内容。然后,当应用程序请求附近用户的列表时,应用程序只需要接收实际位于附近的用户,其他用户可以被忽略,保存一些数据,以及做的工作电话上的距离计算。

答案 2 :(得分:2)

您应该考虑以下可能的问题。

  1. 如果应用程序继续发送用户的位置,那么用户电池将会关闭,并且Web服务器内存将会增加。

  2. 应用程序将继续使用互联网将位置发送到网络服务器。

  3. 在漫游时,互联网数据的成本可能会增加。

  4. 我的建议:

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

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

    3. 如果申请已关闭,请清除该应用在网络服务器中的位置。

答案 3 :(得分:-2)

您还应该看看scringo。这是一个SDK&具有此确切功能的服务(查找应用的附近用户+在地图上显示等等)