Fase 0 — cerrada
Informe técnico de viabilidad
Respuesta directa
Conecta es construible con confirmaciones del sistema, no con automatización total. El objetivo de cero interacción física se cumple; el de cero toques no, y la razón es una política de Android y de iOS, no una decisión de diseño.
1. Viabilidad general
- NO VIABLE Ninguna aplicación de terceros puede encender el tethering con Internet. Android lo protege con
TETHER_PRIVILEGED(firma, sistema, dueño del dispositivo o privilegios de operador); iOS no expone ninguna API del Hotspot Personal. Es el muro duro y no tiene rodeo legítimo. - CONFIRMACIÓN DEL USUARIO Sí se puede abrir con un toque el panel de Ajustes y guiar a quien ayuda, en su propio teléfono.
- CONFIRMACIÓN DEL USUARIO Sí se puede unir el solicitante sin teclear ni escuchar la contraseña:
WifiNetworkSpecifier/WifiNetworkSuggestionen Android,NEHotspotConfigurationen iOS. Un aviso del sistema, en su propio teléfono. - AUTOMÁTICO Todo lo demás —descubrimiento, solicitud, aceptación, negociación de MB, tiempo y consentimiento, transporte cifrado de la credencial, estado de sesión, finalización y registro local— es automatizable con APIs públicas.
- NO VIABLE El teléfono sin Internet no puede hablar con el servidor hasta conectarse. Se resuelve con arquitectura local primero y sincronización posterior.
2. Cero interacción física entre usuarios
Requisito innegociable: dos desconocidos no deben conocerse, hablarse, verse, intercambiar teléfonos ni dictarse contraseñas. "Cercano" significa solo proximidad de radio.
Punto crítico descubierto: la app no puede leer el nombre ni la contraseña del hotspot del sistema (getWifiApConfiguration es privilegiada en Android; en iOS no existe equivalente). Para no obligar a dictar contraseñas ni a mostrar un QR en la pantalla ajena —ambas cosas rompen el principio—, el mecanismo propuesto es que quien ayuda registre una sola vez su red en Conecta, cifrada en su propio dispositivo (Keystore o Keychain), y que Conecta la transmita cifrada y de un solo uso por el canal entre teléfonos. Wi-Fi Easy Connect (DPP) queda como plan B en Android moderno.
3. Android → Android
- Descubrimiento: anuncio y escaneo BLE, más Wi-Fi Direct o Wi-Fi Aware; en segundo plano con un servicio en primer plano.
- Negociación por canal cifrado entre los dos teléfonos.
- Quien ayuda activa el hotspot en Ajustes; quien pide confirma el diálogo de
WifiNetworkSpecifier. Dos toques en total, uno en cada teléfono.
Veredicto: viable con confirmación. Es la mejor combinación.
4. iPhone → iPhone
- MultipeerConnectivity y CoreBluetooth son fiables en primer plano; anunciar "estoy disponible" en segundo plano es limitado y poco predecible.
- Quien ayuda debe activar el Hotspot Personal en Ajustes, sin enlace directo garantizado desde la app.
- Quien pide se une con
NEHotspotConfiguration.
Veredicto: viable con fricción.
5. Android pide → iPhone ayuda
Solo BLE sirve entre plataformas (MultipeerConnectivity no interopera). El iPhone que ayuda debe estar prácticamente en primer plano y activar el Hotspot Personal a mano. Android se une con WifiNetworkSpecifier. Veredicto: viable con fricción.
6. iPhone pide → Android ayuda
El ayudante Android puede anunciar en segundo plano y abrir el panel de Ajustes; el iPhone se une con NEHotspotConfiguration. Veredicto: viable con confirmación.
Lo determinante es quién ayuda: un ayudante Android da buena experiencia; un ayudante iPhone añade fricción.
7. Hotspot y tethering
| Capacidad | Android | iOS |
|---|---|---|
| Encender el tethering con Internet desde la app | NO VIABLE | NO VIABLE |
| Abrir el panel de Ajustes correspondiente | CONFIRMACIÓN DEL USUARIO | VIABLE CON FRICCIÓN |
| Leer nombre y clave del hotspot del sistema | NO VIABLE | NO VIABLE |
| Compartir Internet por Wi-Fi Direct o startLocalOnlyHotspot | NO VIABLE | NO VIABLE |
| Cortar el tráfico del invitado al llegar al límite | NO VIABLE | NO VIABLE |
Consecuencia de producto: el límite de MB es acordado y aproximado, no impuesto. La app avisa, muestra el estimado y facilita terminar la sesión.
8. Credenciales y conexión
- Android:
WifiNetworkSpecifier(conexión puntual con diálogo del sistema),WifiNetworkSuggestion(sugerencia persistente) y Wi-Fi Easy Connect/DPP. - iOS:
NEHotspotConfigurationdel framework NetworkExtension, con su entitlement. - La credencial es de un solo uso y se borra al terminar la sesión.
9. Descubrimiento local
| Tecnología | Plataforma | Sirve sin Internet | Nota |
|---|---|---|---|
| Bluetooth Low Energy (GATT) | Android e iOS | Sí | Única vía interoperable entre plataformas |
| Wi-Fi Direct | Android | Sí | No transporta Internet del ayudante |
| Wi-Fi Aware (NAN) | Android 8+ | Sí | Depende del hardware del teléfono |
| Nearby Connections | Android | Sí | Requiere servicios de Google |
| MultipeerConnectivity | iOS | Sí | No interopera con Android |
10. Seguridad
Identidades y claves efímeras por sesión, autenticación mutua, acuerdo de clave X25519, derivación HKDF, cifrado autenticado AES-GCM, nonces con ventana antirrepetición, caducidad, identificador de sesión y borrado de secretos al cerrar. Nada de esto necesita servidor. Ver seguridad y privacidad.
11. Privacidad
Alias efímeros, distancia en rangos, reputación agregada y ningún dato personal. Nunca teléfono, correo, nombre completo, dirección ni coordenadas.
12. Política de uso justo y prevención de abuso
- Límite de tiempo y de MB por sesión, fijados por quien ayuda y visibles antes de aceptar.
- Límite de frecuencia por ventana temporal: modelado, todavía no aplicado.
- Historial de ayudas dadas y recibidas como base de la futura detección de patrones.
- Se distingue el uso frecuente legítimo de la dependencia sistemática. Nunca hay bloqueo automático por pedir ayuda varias veces.
- Las emergencias tienen prioridad conceptual y nunca quedan bloqueadas por esta política.
- Quien ayuda elige, acepta o rechaza sin penalización y termina al instante.
- Sin economía de dependencia: la reputación genera confianza, no recompensas por recibir datos.
“Conecta es para ayuda puntual, no para sustituir tu servicio de datos.”
En uso frecuente: “Has utilizado varias ayudas recientemente. Conecta está diseñado para situaciones puntuales, no como sustituto de un servicio de datos. Si necesitas conexión con frecuencia, considera contratar un servicio de datos adecuado.”
13. Restricciones de operadores
El operador o el plan pueden bloquear o tarifar el tethering, y ninguna app puede sortearlo ni consultarlo de forma fiable. Conecta lo presenta como estado externo: “El operador o plan de datos puede impedir compartir Internet.”
14. Restricciones de los sistemas operativos
- Android: permisos de Bluetooth y de dispositivos cercanos en tiempo de ejecución, servicio en primer plano para anunciar, y restricciones agresivas de batería en Samsung, Xiaomi y Huawei.
- iOS: segundo plano muy limitado para BLE y MultipeerConnectivity, sin API de Hotspot Personal, sin enlace directo garantizado a ese ajuste, y revisión de App Store estricta con NetworkExtension.
- Ambos: prompt del sistema obligatorio para unirse a una red propuesta por una app.
15. MVP recomendado
Orden recomendado: Android→Android, luego iPhone pide con ayudante Android, luego iPhone→iPhone, y por último Android pide con ayudante iPhone. Detalle en el prototipo Android y el prototipo iPhone.
16. Plan de pruebas con dispositivos físicos
Nada se declara validado sin registro de prueba física. El plan completo A–S, con estados PASS, FAIL, BLOCKED y NOT TESTED, está en el plan de pruebas.