Найти ближайших пользователей приложения (iPhone и Android)

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

Моя цель...

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

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

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

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

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

Спасибо и наилучшие пожелания

Ответы

Ответ 1

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

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

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

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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

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

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

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

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

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

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

Ответ 4

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