Найти ближайших пользователей приложения (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 и сервис, который имеет эту точную функцию (найти близких пользователей вашего приложения + показать его на карте и т.д.)