¿Es posible encontrar otros teléfonos cercanos?

Estoy escribiendo una aplicación para Android que me gustaría portar a iOS y Windows Mobile (aunque ahora no sé absolutamente nada sobre ellos). Me gustaría que mi aplicación pueda encontrar otros teléfonos dentro de un radio determinado (quizás de 20 a 30 pies) que también tengan el juego instalado para que los usuarios puedan interactuar con otros en su espacio físico actual. ¿Es posible? y si lo es, cómo?

Planeo que la aplicación requiera una conexión a Internet, así que lo primero que pensé fue usar el GPS como se describe eniOS Encuentra otros dispositivos cercanos (ubicaciones GPS), pero eso requeriría la transmisión continua de datos al servidor para actualizar la ubicación del usuario utilizando tanto el ancho de banda como la batería (sin mencionar los recursos del servidor). El GPS también parece tomar un tiempo para obtener cualquier tipo de solución precisa, y aunque no almacenaría datos históricos, no esperaría que los usuarios me confiaran ese tipo de información privada (¡también deberían hacerlo!)

Sé que hay tecnologías patentadas, como la NFC de Sony, pero ese es un enfoque demasiado estrecho para usarlo en una aplicación que me gustaría ser independiente del dispositivo y del sistema operativo. ¿Qué otras opciones hay? Suponiendo que el usuario esté dispuesto a otorgar a la aplicación los permisos adecuados, ¿qué otros métodos podrían permitirle a un dispositivo encontrar otro cercano, dentro de un rango de 10-15 metros, que sea práctico para una base de usuarios grande (millones +)? ¿Es la geolocalización HTML5 un mejor camino? ¿O es el GPS mi única opción real?

EncontréUsa el GPS de Android para detectar y conectar con otros teléfonos., pero esperaba que los últimos años hayan abierto más opciones.

ACTUALIZAR

Gracias por todas las respuestas hasta ahora. Para responder a algunas preguntas planteadas en los comentarios y respuestas, pensé que describiría cómo espero que las aplicaciones / dispositivos interactúen.

Todos los usuarios que instalen esta aplicación tendrán un agente ejecutándose en segundo plano para actualizar su geolocalización actual y escuchar los pings. Cualquier usuario puede abrir el programa completo y enviar una solicitud rápida para todos los demás usuarios cercanos. Si voy a la ruta del servidor central, entonces el servidor responde a esa solicitud con una lista de nombres de usuario cercanos. Luego, el usuario puede elegir uno de esos para iniciar una conexión, en cuyo caso el dispositivo de destino emite un sonido para notificar una solicitud de conexión.

Desde allí es bastante fácil manejar la interacción entre dos dispositivos. Encontrar a los usuarios cercanos es el punto clave para mí.

Respuestas a la pregunta(2)

Su respuesta a la pregunta