Я пишу приложение для Android, которое я хотел бы в конечном итоге подключить к iOS и Windows Mobile (хотя я абсолютно ничего не знаю о них сейчас). Я хочу, чтобы мое приложение могло находить другие телефоны в определенном радиусе (возможно, 20-30 футов), которые также устанавливают игру, чтобы пользователи могли взаимодействовать с другими в своем текущем физическом пространстве. Возможно ли это, и если да, то как?
Я планирую приложение, требующее подключения к Интернету, поэтому я впервые подумал, что нужно использовать GPS, как описано в iOS Найти другие соседние устройства (местоположения GPS), но это требуют постоянной передачи данных на сервер для обновления местоположения пользователя с использованием как пропускной способности, так и батареи (не говоря уже о ресурсах сервера). Похоже, что GPS, похоже, займет некоторое время, чтобы получить какое-то точное исправление, и хотя я бы не хранил исторические данные, я бы не ожидал, что пользователи доверяют мне такую личную информацию (также они не должны!)
Я знаю, что есть собственные технологии, такие как Sony NFC, но это слишком узкий фокус для использования в приложении, которое я хотел бы быть агностиком для устройства и ОС. Какие еще существуют варианты? Предполагая, что пользователь готов предоставить приложению соответствующие разрешения, какие другие методы могут позволить одному устройству найти другой ближайший, в пределах 10-15 метров, который практичен для большой (миллионной) пользовательской базы? Является ли HTML5 Geolocation лучшим путем? Или GPS - единственный реальный вариант?
Я нашел использовать Android GPS для обнаружения и подключения к другим телефонам, но надеялся, что последние несколько лет откроют дополнительные возможности.
UPDATE
Спасибо за все ответы. Чтобы ответить на некоторые вопросы, поставленные в комментариях и ответах, мне показалось, что я бы описал, как я ожидаю, что приложения/устройства будут взаимодействовать.
Все пользователи, которые устанавливают это приложение, будут иметь агент, работающий в фоновом режиме, чтобы обновить свою текущую геолокацию и прослушать пинг. Любой пользователь может открыть полную программу и отправить быстрый запрос для всех других пользователей поблизости. Если я иду по центральному серверному маршруту, сервер отвечает на этот запрос со списком ближайших имен пользователей. Затем пользователь может выбрать один из них для инициирования соединения, и в этом случае целевое устройство заставляет звук уведомлять о запросе на подключение.
Оттуда легко справиться с взаимодействием между двумя устройствами. Найти этих близких пользователей является для меня точкой привязки.