iOS найти другие устройства поблизости (местоположения GPS) - PullRequest
3 голосов
/ 11 января 2012

У меня есть приложение, которое позволяет пользователю передавать свое местоположение на сервер. Я пытаюсь сделать так, чтобы пользователь нажал кнопку, которая отправит push-уведомление любому, у кого есть приложение, скажем, в радиусе 3 миль. Может кто-нибудь дать мне обзор того, как я могу это сделать.

Единственный способ сделать это - опубликовать координаты gps на сервере. Затем, когда пользователь нажимает «Отправить уведомление», на сервер отправляется сообщение, а затем сервер выполняет сложный поиск близости на основе местоположения, а затем возвращает значения пользователю.

Моя проблема в том, что я не имею опыта работы на стороне сервера и не знаю, как запрограммировать алгоритм поиска GPS на сервере.

Есть ли способ для меня делать то, что я хочу, без необходимости писать код на сервере? Я могу использовать Parse для хранения GPS-координат. Я хотел бы, чтобы мой серверный код просто сохранял и извлекал значения и обрабатывал все остальное на стороне клиента.

Мысли

Ответы [ 2 ]

3 голосов
/ 11 января 2012

Каждое устройство должно периодически отправлять свои GPS-координаты на сервер. Я думаю, что у вас уже есть этот шаг. Следующий шаг - найти устройства, которые находятся рядом друг с другом. Это довольно просто.

Расстояние между двумя точками широты и долготы

Однако, если у вас есть миллионы устройств, будет проблема масштаба, если вы сравните каждое обновление со всеми другими устройствами. Вы можете поместить устройства в определенную область. Например, вы можете поместить обновления в области площадью 100 квадратных миль. Когда приходит обновление, вам нужно сравнивать только те устройства в этом сегменте плюс соседние сегменты, если они находятся близко к краю. Это только вершина анализа головы, но, надеюсь, она укажет вам правильное направление.

0 голосов
/ 11 января 2012

Если вы действительно хотите разместить всю нагрузку на стороне клиента (iOS):

  • Запросите у сервера идентификаторы и адреса всех возможных получателей для push-уведомления
  • Сохраните 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 ... не очень разумно все это размещать на устройстве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...