Fase 2
Prototipo nativo iPhone
Swift y Xcode, solo frameworks oficiales. Las mismas capas que en Android, con implementaciones distintas y límites más estrictos.
PROTOTIPO WEB / ESPECIFICACIÓNNO DEMOSTRADO EN HARDWARE
iOS no expone ninguna API del Hotspot Personal y no garantiza un enlace directo a ese ajuste. Un ayudante iPhone siempre implica más fricción que un ayudante Android.
Capas del proyecto
| Capa | Implementación iOS |
|---|---|
| PeerDiscovery | MultipeerConnectivity entre iPhones; CoreBluetooth para hablar con Android |
| PeerTransport | MCSession y características GATT |
| SecurityManager | CryptoKit: Curve25519, HKDF, AES-GCM, claves en Keychain |
| SessionManager | Máquina de estados y temporizador con reloj monotónico |
| NetworkConfiguration | NEHotspotConfiguration para unirse; guía en pantalla para activar el hotspot |
| FairUseManager | Reglas locales idénticas a Android |
| LocalEventStore | Core Data o SQLite con Data Protection |
| SyncManager | URLSession con reintentos e idempotencia |
iPhone → iPhone, paso a paso
- Anunciarse como disponible con la app en segundo plano es limitado: en la práctica el ayudante debería tener la app abierta o recién usada.
- Descubrimiento, solicitud, aceptación, handshake y negociación funcionan bien en primer plano.
- El ayudante activa el Hotspot Personal a mano en Ajustes.
- El solicitante se une con
NEHotspotConfiguration, con aviso del sistema. - Verificación de Internet real, sesión, fin y registro local.
Frameworks, entitlements y permisos
- MultipeerConnectivity, CoreBluetooth, NetworkExtension, CryptoKit, Network
- Entitlement de Hotspot Configuration para NEHotspotConfiguration
- NSBluetoothAlwaysUsageDescription y NSLocalNetworkUsageDescription con textos claros
- Modos de segundo plano de Bluetooth central y periférico, con sus límites conocidos
Riesgos específicos de iOS
- Revisión de App Store estricta con NetworkExtension: hay que justificar el uso legítimo.
- El anuncio BLE en segundo plano cambia de formato y reduce mucho el alcance de descubrimiento.
- MultipeerConnectivity no interopera con Android: entre plataformas solo sirve BLE.
- No hay forma oficial de saber si el operador permite el Hotspot Personal.