2012-01-11 37 views
2

我有一个应用程序,允许用户将其位置传输到服务器。我正在尝试做的是让用户按下一个按钮,该按钮将发送推送通知给应用程序中的任何人,让我们说3英里半径。有人可以给我一个我如何完成这个概述。iOS查找其他附近设备(GPS位置)

我能想到这样做的唯一方法是将gps坐标发布到服务器。然后,当用户按下“发送notif”消息被发送到服务器时,服务器会根据位置进行一些复杂的邻近搜索,然后将值返回给用户。

我的问题是,我没有服务器端的经验,也不知道如何在服务器上编写GPS搜索算法。

有没有办法让我做我想要的,而不必在服务器上编写代码?我可以使用Parse来存储GPS坐标。我想保留我的服务器代码来简单地存储和检索值,并处理客户端的所有其他事情。

想法?

回答

2

每个设备应定期向服务器发送GPS坐标。我认为你已经有了这一步。下一步是找到彼此靠近的设备。这很简单。

Distance Between Two Latitude and Longitude Points

不过,如果你有几百万的设备,它将如果你比较每个更新到所有其他设备是规模的问题。您可以将设备存储到某个区域。例如,您可以将更新转储到100平方英里的区域。当更新进入时,只需要比较那个桶中的那些设备以及相邻的桶(如果它们靠近边缘的话)。这只是头部分析的头等大事,但希望它能指引您朝正确的方向发展。

0

如果你真想把客户机上的所有负载(IOS)侧:

  • 查询服务器的ID和所有可能的接收者的位置的推送通知
  • 店铺ID和位置自定义对象,并把那些在NSArray中或NSSet中

然后

//otherUsers is the NSArray or NSSet with custom objects 
//currentLocation is the users current location 

for(MYCustomUser * otherUser in otherUsers) { 
    if([currentLocation distanceFromLocation:[otherUser location]] < 4829) { //4828 == 3 Miles in Meters, so 4829 is 3 Miles + one Meter 
     //send msg to server to perform push notf. to user 
    } 
} 

做...

你应该把这个在NSOperationQueue所以这是可以在后台运行一个不阻止设备

但作为bbarnhart说......这不是很明智的做法是把所有这一切在设备。