1. Identificación del Proyecto y Desarrollador
MacMirror para Android es una aplicación móvil de código abierto desarrollada y mantenida por Ángel Velásquez ("Desarrollador"). La aplicación compañera de escritorio es MacMirror para macOS.
- Correo del Desarrollador: angelvelasquezdev@gmail.com
- Repositorio del Código Fuente: github.com/angelvelasquezdev/mac-mirror-android
- Licencia: Licencia MIT
2. Arquitectura Exclusivamente Local (Cero Servidores en la Nube)
MacMirror opera bajo un principio estricto de Cero Dependencia de la Nube. La aplicación no utiliza, no se conecta ni interactúa con ningún servidor remoto, base de datos en la nube, broker de mensajería externo o infraestructura alojada.
Toda la comunicación ocurre de punto a punto dentro de tu red de área local privada (LAN / Wi-Fi) entre tu teléfono Android y tu computadora Mac vinculada. Ningún contenido de tus notificaciones sale jamás de tu red local bajo ninguna circunstancia.
3. Permisos de Android y Tratamiento de Datos
Para cumplir su función principal de reflejar notificaciones en tiempo real, MacMirror solicita permisos específicos del sistema Android. A continuación se desglosa el propósito técnico de cada permiso y sus límites de tratamiento:
android.permission.BIND_NOTIFICATION_LISTENER_SERVICE
Permiso Funcional Central
Finalidad: Capturar las alertas que llegan a la barra de estado de Android (título de la notificación, cuerpo de texto, paquete de la aplicación emisora e ícono visual).
Tratamiento de los datos: Las notificaciones se procesan de forma efímera en la memoria volátil (RAM) del dispositivo únicamente durante el tiempo necesario para cifrarlas. Se transmiten de inmediato vía WebSocket local a tu Mac vinculado. La app nunca almacena las notificaciones en disco permanente, nunca genera registros históricos de mensajes y nunca las sube a servidores externos.
FOREGROUND_SERVICE & FOREGROUND_SERVICE_CONNECTED_DEVICE
Prioridad para Dispositivo Conectado (Android 14+)
Finalidad: A partir de Android 14 (API 34+), los servicios en primer plano requieren declarar un tipo funcional explícito. MacMirror declara el tipo connectedDevice porque mantiene una sesión de socket activa con un dispositivo compañero de escritorio (tu Mac). Esto otorga prioridad de ejecución al proceso y previene que los optimizadores de memoria agresivos de ciertos fabricantes (MIUI/HyperOS, One UI, ColorOS) corten la conexión.
Tratamiento de los datos: Gestiona exclusivamente la estabilidad del proceso y la conexión de red local. Cero recopilación de métricas personales, telemetría o registros de usuario.
android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
Exención de Doze Mode (Transmisión Local 24/7)
Finalidad: Solicita al usuario desactivar la optimización de batería para MacMirror. Cuando un teléfono Android entra en reposo con la pantalla apagada (Doze Mode), el sistema operativo suspende los sockets de red Wi-Fi y congela tareas en segundo plano, lo que retrasaría o impediría el reflejo de notificaciones entrantes.
Tratamiento de los datos: Es un permiso a nivel de gestión de energía del sistema. No recopila, almacena ni transmite ningún dato del usuario. Solo garantiza que el socket Wi-Fi local no se interrumpa con la pantalla bloqueada.
android.permission.POST_NOTIFICATIONS
Indicador Visual de Estado
Finalidad: Requerido en Android 13 en adelante para mostrar una notificación persistente y silenciosa (IMPORTANCE_LOW) que informa en todo momento el estado del servicio ("Conectado a Mac" / "En espera"). También se utiliza para emitir alertas de prueba solicitadas por el usuario dentro de la app.
Tratamiento de los datos: Genera únicamente indicadores informativos locales en tu dispositivo. Ningún historial de alertas se envía al exterior.
android.permission.QUERY_ALL_PACKAGES
Filtro de Aplicaciones
Finalidad: Consultar la lista de aplicaciones instaladas en tu dispositivo con el único objetivo de mostrarlas en la pantalla de ajustes de "Filtro de Aplicaciones".
Tratamiento de los datos: Te permite elegir con total granularidad qué aplicaciones tienen permitido reflejar alertas y cuáles quedan bloqueadas. La lista de aplicaciones instaladas se procesa estrictamente en el dispositivo, jamás se envía por la red ni se comparte con terceros.
INTERNET, ACCESS_WIFI_STATE, CHANGE_WIFI_MULTICAST_STATE
Red Local (LAN)
Finalidad: Descubrir el servicio del Mac en la red local mediante mDNS / Bonjour (servicio _macmirror._tcp) y establecer la conexión WebSocket en el puerto 50002.
Tratamiento de los datos: Aunque Android clasifica el socket de red bajo el permiso general INTERNET, MacMirror realiza cero conexiones hacia la Internet pública. Todo el tráfico circula exclusivamente en la subred local de tu Wi-Fi.
4. Seguridad Criptográfica y Cifrado Extremo a Extremo
Incluso dentro de la red local Wi-Fi, MacMirror implementa Cifrado Extremo a Extremo (E2EE) autenticado para prevenir inspecciones de paquetes o escuchas no autorizadas en tu red:
- Vinculación y Acuerdo de Claves: Intercambio efímero mediante Diffie-Hellman en Curvas Elípticas (ECDH sobre Curva NIST P-256) combinado con un PIN criptográfico de 6 dígitos mostrado fuera de banda en la barra de menú de macOS durante el handshake (
POST /pair/initiate y POST /pair/confirm). - Derivación de Claves: Las claves de sesión se derivan mediante HKDF-SHA256 (RFC 5869) garantizando secreto perfecto hacia adelante (forward secrecy).
- Cifrado de Carga Útil: Todos los paquetes de notificación transmitidos vía WebSocket se cifran con AES-256-GCM con vectores de inicialización (IV) únicos y etiquetas de autenticación, asegurando confidencialidad e integridad contra manipulaciones.
- Almacenamiento Seguro: La clave simétrica de sesión se almacena localmente en el dispositivo utilizando Android Keystore y Jetpack DataStore /
EncryptedSharedPreferences, respaldada por módulos de seguridad en hardware (TEE/StrongBox) donde esté disponible.
5. Ausencia de Terceros, Analíticas y Publicidad
| Categoría | Estado | Detalle |
| Recopilación de Datos Personales | NINGUNA | No se solicitan cuentas, correos, nombres, teléfonos ni identificadores únicos. |
| Analítica y Telemetría | NINGUNA | Sin Google Analytics, Firebase, Mixpanel ni herramientas de telemetría. |
| Librerías de Publicidad | NINGUNA | Totalmente libre de anuncios y sin cookies de seguimiento. |
| Registro Remoto de Errores | NINGUNA | Sin herramientas externas de diagnóstico de fallos (Sentry, Crashlytics). |
| Venta o Transferencia de Datos | CERO | Tus datos nunca se monetizan, venden, alquilan ni ceden a terceros. |
6. Retención y Eliminación de Datos
Dado que MacMirror no recopila datos en servidores externos, no existe ningún registro ni perfil de usuario en la nube susceptible de eliminación.
Mantienes el control absoluto sobre los datos locales en tu dispositivo:
- Desvinculación Bidireccional: Al desvincular el dispositivo desde Android o desde macOS, se revoca de inmediato el handshake criptográfico, se elimina la clave de sesión AES de
EncryptedSharedPreferences y se desconecta el WebSocket. - Borrado de Datos de la App: Desde Ajustes de Android > Aplicaciones > MacMirror > Almacenamiento > Borrar datos, se purgan de forma irreversible todas las configuraciones locales y cachés.
- Desinstalación: Al desinstalar la app, el sistema operativo borra automáticamente todos los archivos y claves criptográficas asociadas.
7. Privacidad de Menores y Auditoría de Código Abierto
MacMirror no solicita, procesa ni almacena deliberadamente información personal de ninguna persona, incluyendo menores de 13 años (o 16 según la jurisdicción aplicable).
Al ser un proyecto bajo la Licencia MIT, cada uno de nuestros compromisos de seguridad y privacidad es auditable de forma transparente. Cualquier usuario, desarrollador o investigador de seguridad puede examinar el código, comprobar las dependencias y compilar el archivo APK directamente desde el repositorio:
8. Dudas sobre la Política y Contacto
Para consultas de privacidad, reportes técnicos de seguridad o auditorías sobre MacMirror para Android, puedes escribir directamente al desarrollador: