iOS查找其他附近设备(GPS位置)
问题描述:
我有一个应用程序,允许用户将其位置传输到服务器。我正在尝试做的是让用户按下一个按钮,该按钮将发送推送通知给应用程序中的任何人,让我们说3英里半径。有人可以给我一个我如何完成这个概述。iOS查找其他附近设备(GPS位置)
我能想到这样做的唯一方法是将gps坐标发布到服务器。然后,当用户按下“发送notif”消息被发送到服务器时,服务器会根据位置进行一些复杂的邻近搜索,然后将值返回给用户。
我的问题是,我没有服务器端的经验,也不知道如何在服务器上编写GPS搜索算法。
有没有办法让我做我想要的,而不必在服务器上编写代码?我可以使用Parse来存储GPS坐标。我想保留我的服务器代码来简单地存储和检索值,并处理客户端的所有其他事情。
想法?
答
每个设备应定期向服务器发送GPS坐标。我认为你已经有了这一步。下一步是找到彼此靠近的设备。这很简单。
Distance Between Two Latitude and Longitude Points
不过,如果你有几百万的设备,它将如果你比较每个更新到所有其他设备是规模的问题。您可以将设备存储到某个区域。例如,您可以将更新转储到100平方英里的区域。当更新进入时,只需要比较那个桶中的那些设备以及相邻的桶(如果它们靠近边缘的话)。这只是头部分析的头等大事,但希望它能指引您朝正确的方向发展。
答
如果你真想把客户机上的所有负载(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说......这不是很明智的做法是把所有这一切在设备。