Найти ближайших пользователей приложения (iPhone и Android) - PullRequest
17 голосов
/ 21 октября 2011

Я работаю над приложением, которое имеет версию для iPhone, а также версию для Android.

Моя цель ...

  • отображать список ближайших пользователей моего приложения (пользователей приложения iPhone и пользователей приложения Android). Допустим, список пользователей, которые в настоящее время находятся в радиусе 1 или 2 мили и используют мое приложение.
  • Этот список будет отображаться как в приложениях, так и в приложениях для iPhone и Android.
  • Приложение обновит список, когда пользователь нажмет кнопку «Обновить».

Мой вопрос ...

  • Каков наилучший способ достижения вышеуказанной цели? Нужно ли периодически отправлять текущее местоположение GPS всех пользователей приложения с их дроидов и айфонов на наш веб-сервер?

Чтобы сделать мой вопрос более понятным ...

  • У меня есть алгоритм для определения мест / пользователей в заданном диапазоне (радиус 1 миля или 2 мили и т. Д.), Поэтому, пожалуйста, не говорите мне, как найти пользователей в данном диапазоне.
  • Я знаю, как узнать текущее местоположение устройств iPhone и Droid, поэтому ПОЖАЛУЙСТА, НЕ СКАЖИ МНЕ, как получить обновленное местоположение устройства iPhone или Android.
  • Я знаю, что это проблема конфиденциальности. Поэтому приложение будет запрашивать у пользователя разрешение на отправку своего местоположения на наш веб-сервер, поэтому ПОЖАЛУЙСТА, НЕ СКАЖИ МНЕ о проблемах конфиденциальности, которые могут возникнуть у пользователей или Apple.
  • ТОЛЬКО СКАЗАТЬ МНЕ Как лучше всего поддерживать обновленный список географических местоположений пользователей моего приложения на веб-сервере? Лучший, проверенный подход!
  • Дайте мне знать, если мой вопрос все еще нуждается в разъяснении.

Спасибо и всего наилучшего

Ответы [ 4 ]

7 голосов
/ 09 октября 2014

Даже у меня был этот вопрос сегодня во время создания подобного приложения. Оповещение, когда два пользователя / друзья находятся рядом друг с другом - Android Proximity

потратив пару часов на размышления, я подумал, как лучше это сделать:

1) Создайте SharedPreference / DB, в которой хранятся последние координаты устройства, которое также было обновлено на сервере.

2) Создать службу, которая будет запускаться раз в 15 минут с запросом текущего местоположения.

3) Если текущее местоположение совпадает с последним местоположением, полученным из SharedPreference и поблизости от него (зависит от того, сколько вы даете 30 футов или более), тогда пользователь находится в том же месте , поэтому не загружайте координаты на сервер.

4) Если пользователь не находится в непосредственной близости или последнее местоположение не соответствует текущему местоположению, загрузите координаты на сервер.

5) После загрузки координат на сервер тоже обновите SharedPreference ..

6) После загрузки верните ответные данные о пользователях с сервера, которые находятся рядом с такими же координатами. Пользователь получит уведомление, если кто-то вокруг него ..

3 голосов
/ 31 октября 2011

Каждое обновление будет стоить батареи и данных. Если вы сделаете это слишком много, вы наверняка будете раздражать пользователей, будучи боровом с ресурсами.

Я бы предложил создать службу, которая будет периодически вызываться, чтобы обновить местоположение пользователя на сервере и получить список ближайших пользователей с веб-сервера. Частота обновлений должна зависеть от скорости, с которой пользователь путешествовал во время последнего обновления. Если они не двигались, вероятно, 15 минут в порядке, если они ехали на скоростях машины, чаще всего это необходимо.

Чтобы сохранить местоположения пользователей на веб-сервере, я бы предложил использовать специально созданный ГИС-пакет, который на самом деле понимает, что такое координата местоположения. В большинство баз данных встроено что-то подобное. Затем, когда приложение запрашивает список ближайших пользователей, приложению нужно только получать пользователей, которые действительно находятся рядом, а другие можно игнорировать, сохраняя некоторые данные и выполняя работу. Расчеты расстояния по телефону.

2 голосов
/ 21 октября 2011

Вы должны рассмотреть следующие возможные проблемы.

  1. Если приложение продолжает отправлять местоположение пользователя, батарея пользователя разряжается, а память веб-сервера увеличивается.

  2. Приложение будет продолжать использовать Интернет для отправки местоположения на веб-сервер.

  3. Во время роуминга стоимость интернет-данных может увеличиться.

мои предложения:

  1. Приложение должно отправлять местоположение пользователя каждые 15 минут.

  2. Каждое приложение должно использовать уникальный идентификатор для обновления своего местоположения.

  3. Если приложение закрыто, очистите местоположение этого приложения на веб-сервере.

0 голосов
/ 16 февраля 2012

Вы также должны взглянуть на scringo . Это SDK и сервис, обладающий именно этой функцией (найдите ближайших пользователей вашего приложения + показать его на карте и т. Д.) *

...