- Para resolver la lentitud de uso y lo engorroso del proceso de entrada de la app de PureGym, la optimicé personalmente con Apple Wallet
- El código QR existente era una forma de acceso ineficiente: cada vez había que abrir la app y cargar la información, lo que tomaba unos 47 segundos
- A través de varios procesos técnicos, como ingeniería inversa, uso de mitmproxy y el framework PassKit, implementé un pase de Wallet con renovación automática
- En el proceso confirmé el funcionamiento interno de PureGym expuesto en la web, como fallas de seguridad del código PIN, la estructura de autenticación de la API y la información de ubicación de las sucursales
- Al final logré una experiencia de acceso de 3 segundos, y dejé claro que fue solo un experimento personal y no es un servicio oficial
47 segundos: el inicio de la incomodidad
- Un día de semana a las 11:15 a. m., me tomó 47 segundos abrir la app en la entrada de PureGym
- La señal era débil, había que conectarse al Wi‑Fi, abrir la app y saltarse varias notificaciones push y ofertas especiales antes de que apareciera el QR
- Tardaba mucho en mostrarse el código QR real, y eso te hacía sentir observado por otros miembros
- Repetido 6 veces por semana, era una experiencia ineficiente que consumía 282 segundos cada semana
- Comparada con experiencias sin fricción como Amazon Fresh, la UX de entrada de PureGym estaba muy atrasada
El misterio del PIN de 8 años
- El autor ha usado el mismo código PIN de 8 dígitos durante 8 años
- Ese PIN ni expira ni se cambia
- En cambio, el código QR dentro de la app se reemplaza por un valor nuevo cada minuto
- Existe una gran contradicción entre el nivel de seguridad real y la implementación efectiva
- El método del PIN se mantiene durante un tiempo absurdamente largo, mientras que solo el código QR está protegido con rigor: un verdadero "show de seguridad"
Entendiendo PureGym con mitmproxy
- Al principio intenté usar una captura del código QR dentro de Apple Wallet, pero no funcionó de inmediato
- El código QR de PureGym se genera dinámicamente, expira aproximadamente en una semana, pero la app lo renueva cada minuto
- Buscando repositorios relacionados con "PureGym" en GitHub, encontré la estructura de autenticación de la API
- El PIN de 8 dígitos para iniciar sesión se usaba exactamente como la contraseña de la API
- La información de autenticación básica codificada en Base64 también tenía poca seguridad
- Para analizar el tráfico de la app, intercepté solicitudes con herramientas proxy como mitmproxy
- La estructura JSON del código QR estaba compuesta por part1 (id fijo), part2 (timestamp) y part3 (salt para renovación)
- La API incluso indicaba el momento de renovación y las condiciones de expiración
PassKit: el potencial de Apple Wallet
- Los pases de Apple Wallet no son tarjetas estáticas, sino una especie de miniapp capaz de renovarse sola, enviar notificaciones push y reaccionar a la ubicación
- Para implementar PassKit se necesitan una especificación JSON, recursos de imagen, firma con certificados y un servicio web para actualizaciones en tiempo real
- Se requiere emitir un Pass Type ID y un certificado WWDR desde el portal de desarrolladores de Apple
- La firma y la gestión de certificados son complejas, pero cuando funciona, la experiencia en el dispositivo real es muy fluida
Construcción del backend en Swift
- Normalmente usaría Node.js, pero implementé directamente el servicio web de PassKit con Vapor basado en Swift
- Cuando el pase necesitaba actualizarse, ofrecía actualización automática mediante push silencioso
- Así logré una renovación del pase natural, sin que el usuario siquiera lo notara
Automatización de ubicaciones de PureGym en todo el país
- Los pases de Apple Wallet pueden mostrarse automáticamente en ubicaciones específicas
- El sitio oficial de PureGym no tenía coordenadas detalladas, pero pude obtener desde la API una lista con las coordenadas de todas las sucursales del país
- Analicé todas las coordenadas y asigné a cada pase la sucursal más cercana
- Desventaja: si el PureGym está dentro de un centro comercial, el pase puede aparecer incluso cuando solo vas de compras, lo que resulta en una pequeña molestia
Integración con Apple Watch
- Los pases de Apple Wallet se sincronizan automáticamente con el Apple Watch sin trabajo adicional
- Con dos clics en la muñeca, escanear y entrar, el proceso se redujo a 3 segundos
- Se consiguió una reducción de tiempo de más del 93%
El cambio en cifras
- Tiempo de entrada con la app original de PureGym: 47 segundos
- Tiempo de entrada con el pase de Apple Wallet: 3 segundos
- Tiempo promedio ahorrado por semana: 4.4 minutos (3.8 horas al año)
- Personas alrededor me preguntaron 23 veces "¿existe una app así?", y a todas les expliqué que era algo no oficial
- Aunque hubo solicitudes, no hay planes de distribuirlo por temas de derechos de autor y políticas del servicio
Bonus: integración con Home Assistant
- A través del endpoint de ocupación interior de la API de PureGym, mostré el nivel actual de congestión del gimnasio en un dashboard de IoT
- Eso permite decidir volver en horarios más tranquilos con base en datos, mejorando la eficiencia y la motivación para entrenar
Realidad y ética de la ingeniería
- Empezó como una solución puramente personal a una molestia, pero era un área que dentro de PureGym no habían mejorado durante años
- A veces, un prototipo creado fuera de la organización resuelve un problema más rápido que la hoja de ruta oficial
- Aun así, oficialmente esto podría violar los términos de uso, y PureGym podría bloquearlo en cualquier momento
- Nunca lo automaticé ni lo compartí; fue únicamente para experimentación personal, y seguí principios como el uso de caché por estabilidad
Próximos pasos y cierre
- En el futuro podrían proponerse ideas de expansión, como "notificaciones push de vergüenza"
- La utilidad práctica puede ser pequeña, pero me satisface haber optimizado 3.8 horas al año de "acciones innecesarias"
- Si PureGym lo implementara oficialmente, podría mejorar la comodidad de muchos más usuarios
- Queda como un caso de una "experiencia no oficial pero efectiva"
Aún no hay comentarios.