Companion App — qué es, desarrollo de aplicaciones compañeras

Autor: IT Sectr Publicado: 2026-02-16 Tiempo de lectura: 9 min

Companion App — una aplicación compañera para dispositivos wearables Apple Watch y Wear OS, que funciona junto con la aplicación principal en el teléfono inteligente. Companion App sincroniza datos a través de WatchConnectivity (iOS) o Wearable Data Layer (Android), muestra notificaciones en el reloj y puede funcionar de forma autónoma. El desarrollo se realiza en Swift para watchOS y Kotlin para Wear OS. Más información en WatchConnectivity Docs.

Lo más importante

  • Companion App — una aplicación wearable que funciona con la aplicación principal en el teléfono
  • WatchConnectivity — un framework para intercambiar datos entre iPhone y Apple Watch
  • Wearable Data Layer — una API para sincronizar la aplicación Android con Wear OS
  • Funcionamiento autónomo — el reloj almacena en caché los datos y funciona sin conexión al teléfono
  • Notificaciones push — el companion muestra notificaciones del teléfono en la muñeca

¿Qué es Companion App — una aplicación para wearable?

Companion App — una aplicación para dispositivos wearables Apple Watch o Wear OS que se distribuye junto con la aplicación principal de iOS o Android. El objetivo principal es ampliar la funcionalidad a la muñeca: visualización rápida de información, respuesta a mensajes, control de música, seguimiento de entrenamientos. Companion App se instala automáticamente en el reloj al instalar la aplicación principal en el teléfono, si el desarrollador la incluyó en la compilación.

Arquitectura de una aplicación companion incluye dos componentes: la aplicación iOS/Android (principal) y la aplicación watchOS/Wear OS (compañera). La comunicación entre ellas se realiza a través de las API del sistema: WatchConnectivity para Apple y Wearable Data Layer para Google. Los datos se transfieren en segundo plano por Bluetooth o Wi-Fi — el usuario no ve el proceso de sincronización. La aplicación en el reloj puede tener su propia interfaz de usuario, diferente a la del móvil, adaptada a una pantalla pequeña.

Tipos de aplicaciones companion se diferencian por su grado de dependencia del teléfono. Mirroring apps muestran una copia de los datos del teléfono y no funcionan sin conexión. Decoupled apps tienen su propia lógica, almacenan datos en caché y conservan parte de la funcionalidad al desconectarse del teléfono. Independent apps (watchOS 6+ y Wear OS 3+) se pueden instalar sin teléfono y funcionar de forma totalmente autónoma con su propio acceso a la red.

WatchConnectivity: sincronización de iPhone y Apple Watch

WatchConnectivity — el framework de Apple para la comunicación bidireccional entre iPhone y Apple Watch. Proporciona cuatro mecanismos de transferencia de datos: Application Context (último estado conocido), File Transfer (archivos de cualquier tamaño), User Info (diccionarios con entrega garantizada) e Interactive Messaging (comunicación bidireccional en tiempo real). El sistema elige automáticamente Bluetooth o Wi-Fi según la distancia y la calidad de la señal.

swift
import WatchConnectivity

class PhoneSessionManager: NSObject, WCSessionDelegate {
    func activateSession() {
        WCSession.default.delegate = self
        WCSession.default.activate()
    }
    func sendWorkoutData(_ data: WorkoutData) {
        let dict = ["heartRate": data.heartRate,
                     "calories": data.calories] as [String: Any]
        WCSession.default.transferUserInfo(dict)
    }
    func session(_: WCSession,
               didReceiveUserInfo: [String: Any]) {
        DispatchQueue.main.async {
            NotificationCenter.default.post(
                name: .workoutDataReceived,
                object: didReceiveUserInfo)
        }
    }
}

Interactive Messaging — el único mecanismo de WatchConnectivity con entrega garantizada en tiempo real. Un mensaje se envía y recibe una respuesta en 200–500 ms cuando la conexión está activa. Se utiliza para acciones que requieren una respuesta inmediata: iniciar un entrenamiento, confirmar un pago, abrir una puerta de casa inteligente. La sesión debe estar activa en ambos dispositivos — si el reloj está bloqueado o la aplicación está en segundo plano, no se garantiza la entrega.

File Transfer API está diseñado para grandes volúmenes de datos: imágenes, archivos de audio, entrenamientos exportados. Los archivos se transfieren en segundo plano incluso cuando la aplicación está cerrada. El límite es de hasta 10 transferencias simultáneas en cola. Application Context es el mecanismo más económico: transmite solo el último estado, cancelando contextos anteriores no enviados. Es ideal para sincronizar configuraciones y estado actual.

Wearable Data Layer: sincronización de Android y Wear OS

Wearable Data Layer — una API de Google Play Services para sincronizar datos entre un dispositivo Android y relojes Wear OS. Proporciona tres protocolos: DataItem (sincronización de pares clave-valor), MessageClient (mensajes unidireccionales) y ChannelClient (transmisión de datos en streaming). Los DataItems se sincronizan automáticamente a través de Google Cloud — si el teléfono no está disponible, los datos se entregan cuando se restablece la conexión.

kotlin
class WearableSyncService : WearableListenerService() {
    override fun onDataChanged(dataEvents: DataEventBuffer) {
        dataEvents.forEach { event ->
            when (event.type) {
                DataEvent.TYPE_CHANGED -> {
                    val uri = event.dataItem.uri
                    val path = uri.path // /workout/heartrate
                    val data = DataMapItem
                        .fromDataItem(event.dataItem)
                        .dataMap
                    val bpm = data.getInt("bpm")
                    updateUI(bpm)
                }
            }
        }
    }
}

MessageClient — envía mensajes unidireccionales con una ruta y un array de bytes. Se utiliza para comandos como "Iniciar entrenamiento" o "Pausar música". El mensaje se entrega de forma fiable si el dispositivo está conectado. Para recibir mensajes en Wear OS, implemente WearableListenerService y regístrelo en el manifiesto. MessageClient no admite el almacenamiento en caché automático — si el reloj está desconectado, el mensaje se pierde.

ChannelClient — un protocolo para datos en streaming: audio, video, flujos continuos de sensores. Abre un canal bidireccional a través del cual se transmiten arrays de bytes. Solo es compatible con Wear OS 2.0+. ChannelClient es útil para transmitir audio del teléfono al reloj para llamadas a través de Bluetooth y para retransmitir datos de sensores Bluetooth externos (monitor de frecuencia cardíaca, ciclocomputador) a través del teléfono al reloj.

Funcionamiento autónomo de la aplicación companion en el reloj

Funcionamiento autónomo — la capacidad de una aplicación companion de funcionar sin conexión al teléfono. En watchOS con módulo Cellular, la aplicación envía solicitudes de red directamente a través de eSIM. En Wear OS con LTE, hay una funcionalidad similar disponible. Incluso sin módulo celular, el reloj almacena en caché los últimos datos del teléfono y los muestra cuando está desconectado — el usuario ve la información que estaba actualizada en el momento de la última sincronización.

ModoDatosDisponibilidadEjemplo
En líneaEn vivo del servidor/teléfonoCompletaRuta de navegación
En cachéÚltimos del teléfonoLimitadaLista de contactos
Sin conexiónLocales en el relojMínimaTemporizador, cronómetro

Almacenamiento en caché — un elemento clave del funcionamiento autónomo. La aplicación debe guardar el último estado recibido en el almacenamiento local del reloj. En watchOS se usa UserDefaults o CoreData, en Wear OS — Room Database o DataStore. Al restablecerse la conexión, la caché se actualiza mediante sincronización en segundo plano. Si los datos tienen más de 24 horas, la aplicación muestra un mensaje "Actualice la conexión con el teléfono".

Interfaz de usuario wearable para pantalla limitada — el reloj tiene una pantalla de 1.5–2 pulgadas — la interfaz de la aplicación companion debe ser lo más concisa posible. Apple recomienda NavigationView con una sola columna en watchOS, Google recomienda una lista de tarjetas en Wear OS con deslizamiento para navegar. Los botones deben tener al menos 44pt para un toque cómodo. Evite los campos de entrada de texto — use respuestas predefinidas, dictado o la rueda de desplazamiento Digital Crown.

Diseño energéticamente eficiente — la aplicación companion no debe agotar la batería del reloj en pocas horas. Utilice actualizaciones en segundo plano con un intervalo mínimo. En watchOS, WatchConnectivity pausa las transferencias cuando la batería está baja y las reanuda después de la carga. En Wear OS, Wearable Data Layer agrupa automáticamente las transferencias pequeñas en una para ahorrar energía. Wrist raise — actualice la interfaz de usuario solo cuando el usuario levante la muñeca.

Mejores prácticas de desarrollo de aplicaciones companion

Arquitectura de la aplicación companion debe diseñarse teniendo en cuenta la posible pérdida de conexión. Utilice el patrón Repository: una única fuente de datos en el teléfono se sincroniza con el repositorio local en el reloj. El ViewModel en el reloj se suscribe al repositorio local y muestra los datos independientemente del estado de la conexión. Cuando se restablece la conexión, el Repository en el reloj solicita datos a través de WatchConnectivity o Wearable Data Layer y actualiza el almacenamiento local.

kotlin
class WorkoutRepository constructor(
    private val localStorage: WorkoutDao,
    private val wearableClient: WearableClient
) {
    val workoutFlow: Flow<Workout?> = merge(
        localStorage.observeWorkout(),
        wearableClient.observeWorkout()
            .onEach { localStorage.save(it) }
    )
}

Pruebas de una aplicación companion requieren verificación en relojes reales o un emulador. Xcode admite el simulador de Apple Watch junto con el simulador de iPhone — puede probar WatchConnectivity sin dispositivos físicos. Android Studio incluye un emulador de Wear OS con soporte para Wearable Data Layer. Casos de prueba críticos: pérdida de conexión durante la transferencia, batería baja, funcionamiento simultáneo de dos aplicaciones companion e instalación sin teléfono en relojes independientes.

Publicación de una aplicación companion en watchOS no requiere una carga separada en App Store — la aplicación se incluye en el binario de la aplicación iOS y se ofrece automáticamente para su instalación en el reloj. En Wear OS, la aplicación companion se publica por separado en Google Play, pero está vinculada a la aplicación principal a través del mismo paquete. App Group en iOS y sharedUserId en Android permiten que las aplicaciones principal y companion utilicen almacenamiento de datos compartido.

Preguntas frecuentes

¿En qué se diferencia Companion App de una aplicación común en el reloj?

Companion App requiere tener instalada la aplicación principal en iPhone o Android para su funcionalidad completa. Una aplicación independiente común en el reloj (por ejemplo, brújula o cronómetro) funciona de forma autónoma sin teléfono. Companion App sincroniza datos con el teléfono, muestra notificaciones y permite realizar acciones rápidas, pero sin el teléfono pierde algunas funciones.

¿Cómo transfiere WatchConnectivity datos entre iPhone y Watch?

WatchConnectivity admite cuatro modos: Application Context para transmitir el estado actual cancelando el anterior, File Transfer para archivos de cualquier tamaño, User Info para diccionarios de datos con entrega garantizada e Interactive Messaging para comunicación bidireccional en tiempo real. Los datos se transmiten por Bluetooth o Wi-Fi — el sistema selecciona automáticamente el canal óptimo.

¿Puede Companion App funcionar sin internet?

Sí, una aplicación companion funciona de forma autónoma — watchOS y Wear OS almacenan en caché los datos recibidos del teléfono. En relojes con módulo celular, la aplicación envía solicitudes directamente a través de eSIM o LTE. Los datos en caché se muestran incluso sin conexión. Cuando se restablece la conexión, la caché se actualiza mediante sincronización en segundo plano.

¿Qué tipos de aplicaciones utilizan más frecuentemente Companion App?

Las categorías más populares: rastreadores de fitness con sincronización de entrenamientos, mensajeros para responder mensajes desde el reloj, navegadores con indicaciones de giro en la muñeca, reproductores de música para controlar la reproducción, sistemas de pago, hogar inteligente para controlar dispositivos y monitores médicos para pulso y presión arterial.

¿Cuánta energía consume Companion App en el reloj?

Apple Watch proporciona hasta 18 horas de funcionamiento con una aplicación companion activa en condiciones de uso estándar. Wear OS — hasta 24 horas. WatchConnectivity está optimizado para bajo consumo energético: la transferencia de datos se detiene cuando la batería está baja y la sincronización masiva se realiza durante la carga del reloj.

Resumen

  • Companion App — una aplicación para el reloj que funciona junto con la aplicación principal en el teléfono
  • WatchConnectivity — un framework de iOS con cuatro modos de transferencia de datos para Apple Watch
  • Wearable Data Layer — una API de Android para sincronizar con Wear OS a través de DataItem y MessageClient
  • Funcionamiento autónomo — el almacenamiento en caché permite trabajar cuando está desconectado del teléfono
  • Consumo de energía — hasta 18 horas en Apple Watch, hasta 24 horas en Wear OS
  • Interfaz para reloj — interfaz concisa con elementos grandes y texto mínimo
  • Publicación — watchOS se incluye en el binario de iOS, Wear OS se publica por separado en Google Play

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también