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