He liberado como código abierto un monitor de conectividad mínimo para Kotlin Multiplatform que expone un único StateFlow de estado de conectividad desde el código compartido. En Android se apoya en callbacks de ConnectivityManager y en iOS utiliza SCNetworkReachability sin depender de CocoaPods.
Repositorio: GitHub KMP Connectivity Monitor · Demo en video: YouTube
Por qué lo construí
Casi todas las apps deben reaccionar a la conectividad. Buscaba un enfoque de producción para Compose Multiplatform con fricción cero que mantuviera una sola API en commonMain, implementaciones nativas por plataforma, sin CocoaPods en iOS y uso sencillo desde Compose.
La API mínima en commonMain
Define un enum de estados Online, Offline y Unavailable, una interfaz ConnectivityMonitor con un StateFlow de estado y métodos start y stop, además de una fábrica esperada ConnectivityMonitorFactory para crear instancias específicas por plataforma.
Implementación en Android con ConnectivityManager
La capa Android registra un NetworkCallback y evalúa las capacidades de red comprobando NET_CAPABILITY_INTERNET y NET_CAPABILITY_VALIDATED. Cada cambio actualiza un flujo MutableStateFlow que emite el estado Online u Offline. Requiere permisos en el manifest de la app: android.permission.INTERNET y android.permission.ACCESS_NETWORK_STATE. En librerías conviene incluir ACCESS_NETWORK_STATE en el manifest de androidMain para evitar avisos de lint.
Implementación en iOS con SystemConfiguration sin Pods
En iOS se monitoriza la ruta por defecto mediante SCNetworkReachability. A partir de los flags se determina si es alcanzable y si requiere conexión, emitiendo Online u Offline en el flujo. Para enlazar el framework se añade la opción de link con SystemConfiguration desde Gradle. Si prefieres NWPathMonitor, puedes cambiar la implementación a Network framework y enlazar ese framework en su lugar.
Uso en Compose Multiplatform
En tu Composable principal crea el monitor con la fábrica, colecciona el StateFlow con un valor inicial Unavailable y gestiona el ciclo de vida con start en un efecto lanzado y stop en un efecto desechable. La UI puede renderizar de forma reactiva tarjetas de estado o banners de conectividad basados en Online u Offline.
Puntos de entrada por plataforma
En Android, inyecta la fábrica en setContent y en iOS pásala al Composable de arranque. El patrón de fábrica mantiene el código común limpio y facilita pruebas con dobles o stubs.
Cómo ejecutar
Android se compila con el ensamblado de debug desde Gradle o directamente desde Android Studio. En iOS, ejecuta el destino desde Android Studio con la configuración iOS o desde Xcode, ya sea en simulador o dispositivo.
Hoja de ruta y ayuda
Próximas tareas incluyen un helper Flow.retryWhenOnline basado en el monitor y exponer el tipo de red como WiFi o Celular. Si te resulta útil, una estrella o un PR en el repo sería genial.
Pruebas y licencia
El módulo está preparado para tests con stubs de plataforma y se distribuye bajo licencia MIT disponible en el repositorio.
Repositorio del proyecto: Qandil11 KMP Connectivity Monitor
Cómo puede ayudarte Q2BSTUDIO
En Q2BSTUDIO desarrollamos software a medida y aplicaciones a medida con enfoque multiplataforma, integrando mejores prácticas de ingeniería, seguridad y observabilidad. Si buscas crear una base compartida con Kotlin Multiplatform y una experiencia nativa por plataforma, nuestro equipo puede diseñar arquitecturas robustas y escalables, integrando servicios cloud aws y azure, ciberseguridad avanzada y pipelines de entrega continua. Descubre cómo abordamos proyectos de desarrollo de aplicaciones y software multiplataforma alineados con objetivos de negocio, y cómo potenciamos productos con inteligencia artificial, desde ia para empresas y agentes IA hasta visión por computador y NLP, con un enfoque responsable y seguro. También impulsamos servicios inteligencia de negocio y analítica con power bi para cerrar el ciclo de datos a decisión. Si quieres llevar tu producto al siguiente nivel con IA, visita nuestra solución de inteligencia artificial.
Palabras clave relacionadas: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.