Companion App — o que é, desenvolvimento de aplicativos companheiros

Autor: IT Sectr Publicado: 2026-02-16 Tempo de leitura: 9 min

Companion App — um aplicativo companheiro para dispositivos vestíveis Apple Watch e Wear OS, que funciona em conjunto com o aplicativo principal no smartphone. O Companion App sincroniza dados via WatchConnectivity (iOS) ou Wearable Data Layer (Android), exibe notificações no relógio e pode funcionar de forma autônoma. O desenvolvimento é feito em Swift para watchOS e Kotlin para Wear OS. Saiba mais em WatchConnectivity Docs.

Principais pontos

  • Companion App — um aplicativo wearable que funciona com o aplicativo principal no telefone
  • WatchConnectivity — um framework para troca de dados entre iPhone e Apple Watch
  • Wearable Data Layer — uma API para sincronizar o aplicativo Android com Wear OS
  • Operação autônoma — o relógio armazena dados em cache e funciona sem conexão com o telefone
  • Notificações push — o companion exibe notificações do telefone no pulso

O que é Companion App — um aplicativo para wearable?

Companion App — um aplicativo para dispositivos vestíveis Apple Watch ou Wear OS que acompanha o aplicativo principal iOS ou Android. O objetivo principal é estender a funcionalidade ao pulso: visualização rápida de informações, resposta a mensagens, controle de música, acompanhamento de treinos. O Companion App é instalado automaticamente no relógio ao instalar o aplicativo principal no telefone, se o desenvolvedor o incluiu na compilação.

Arquitetura de um aplicativo companion inclui dois componentes: o aplicativo iOS/Android (principal) e o aplicativo watchOS/Wear OS (companheiro). A comunicação entre eles é feita através de APIs do sistema: WatchConnectivity para Apple e Wearable Data Layer para Google. Os dados são transferidos em segundo plano via Bluetooth ou Wi-Fi — o usuário não vê o processo de sincronização. O aplicativo no relógio pode ter sua própria interface, diferente da do celular, adaptada para uma tela pequena.

Tipos de aplicativos companion diferem pelo grau de dependência do telefone. Mirroring apps exibem uma cópia dos dados do telefone e não funcionam sem conexão. Decoupled apps têm sua própria lógica, armazenam dados em cache e mantêm parte da funcionalidade quando desconectados do telefone. Independent apps (watchOS 6+ e Wear OS 3+) podem ser instalados sem telefone e funcionar de forma totalmente autônoma com seu próprio acesso à rede.

WatchConnectivity: sincronização do iPhone e Apple Watch

WatchConnectivity — o framework da Apple para comunicação bidirecional entre iPhone e Apple Watch. Ele fornece quatro mecanismos de transferência de dados: Application Context (último estado conhecido), File Transfer (arquivos de qualquer tamanho), User Info (dicionários com entrega garantida) e Interactive Messaging (comunicação bidirecional em tempo real). O sistema escolhe automaticamente Bluetooth ou Wi-Fi com base na distância e qualidade do sinal.

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 — o único mecanismo do WatchConnectivity com entrega garantida em tempo real. Uma mensagem é enviada e recebe resposta em 200–500 ms quando a conexão está ativa. É usado para ações que exigem resposta imediata: iniciar um treino, confirmar um pagamento, abrir uma porta de casa inteligente. A sessão deve estar ativa em ambos os dispositivos — se o relógio estiver bloqueado ou o aplicativo em segundo plano, a entrega não é garantida.

File Transfer API é projetado para grandes volumes de dados — imagens, arquivos de áudio, treinos exportados. Os arquivos são transferidos em segundo plano mesmo com o aplicativo fechado. O limite é de até 10 transferências simultâneas na fila. Application Context é o mecanismo mais econômico: transmite apenas o último estado, cancelando contextos anteriores não enviados. É ideal para sincronizar configurações e status atual.

Wearable Data Layer: sincronização do Android e Wear OS

Wearable Data Layer — uma API do Google Play Services para sincronizar dados entre um dispositivo Android e relógios Wear OS. Ele fornece três protocolos: DataItem (sincronização de pares chave-valor), MessageClient (mensagens unidirecionais) e ChannelClient (transmissão de dados em streaming). Os DataItems são sincronizados automaticamente via Google Cloud — se o telefone estiver indisponível, os dados são entregues quando a conexão é restaurada.

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 — envia mensagens unidirecionais com um caminho e array de bytes. É usado para comandos como "Iniciar treino" ou "Pausar música". A mensagem é entregue de forma confiável se o dispositivo estiver conectado. Para receber mensagens no Wear OS, implemente WearableListenerService e registre-o no manifesto. O MessageClient não suporta cache automático — se o relógio estiver desconectado, a mensagem é perdida.

ChannelClient — um protocolo para dados em streaming: áudio, vídeo, fluxos contínuos de sensores. Abre um canal bidirecional através do qual arrays de bytes são transmitidos. É suportado apenas no Wear OS 2.0+. O ChannelClient é útil para transmitir áudio do telefone para o relógio para chamadas via Bluetooth e para retransmitir dados de sensores Bluetooth externos (monitor de frequência cardíaca, ciclocomputador) através do telefone para o relógio.

Operação autônoma do aplicativo companion no relógio

Operação autônoma — a capacidade de um aplicativo companion funcionar sem conexão com o telefone. No watchOS com módulo Cellular, o aplicativo envia solicitações de rede diretamente via eSIM. No Wear OS com LTE, funcionalidade similar está disponível. Mesmo sem módulo celular, o relógio armazena em cache os dados mais recentes do telefone e os exibe quando desconectado — o usuário vê as informações que estavam atualizadas no momento da última sincronização.

ModoDadosDisponibilidadeExemplo
OnlineAo vivo do servidor/telefoneCompletaRota de navegação
Em cacheÚltimos do telefoneLimitadaLista de contatos
OfflineLocais no relógioMínimaTemporizador, cronômetro

Armazenamento em cache — um elemento chave da operação autônoma. O aplicativo deve salvar o último estado recebido no armazenamento local do relógio. No watchOS, usa-se UserDefaults ou CoreData; no Wear OS — Room Database ou DataStore. Quando a conexão é restaurada, o cache é atualizado por sincronização em segundo plano. Se os dados tiverem mais de 24 horas, o aplicativo mostra uma mensagem "Atualize a conexão com o telefone".

Interface wearable para tela limitada — o relógio tem uma tela de 1,5–2 polegadas — a interface do aplicativo companion deve ser a mais concisa possível. A Apple recomenda NavigationView com uma coluna no watchOS, o Google recomenda uma lista de cartões no Wear OS com deslize para navegação. Os botões devem ter pelo menos 44pt para toque confortável. Evite campos de entrada de texto — use respostas predefinidas, ditado ou a roda de rolagem Digital Crown.

Design energeticamente eficiente — o aplicativo companion não deve drenar a bateria do relógio em poucas horas. Use atualizações em segundo plano com intervalo mínimo. No watchOS, o WatchConnectivity pausa as transferências quando a bateria está baixa e as retoma após o carregamento. No Wear OS, o Wearable Data Layer agrupa automaticamente pequenas transferências em uma para economizar energia. Wrist raise — atualize a interface apenas quando o usuário levantar o pulso.

Melhores práticas de desenvolvimento de aplicativos companion

Arquitetura do aplicativo companion deve ser projetada considerando a possível perda de conexão. Use o padrão Repository: uma única fonte de dados no telefone sincroniza com o repositório local no relógio. O ViewModel no relógio assina o repositório local e exibe dados independentemente do estado da conexão. Quando a conexão é restaurada, o Repository no relógio solicita dados via WatchConnectivity ou Wearable Data Layer e atualiza o armazenamento 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) }
    )
}

Testes de um aplicativo companion requerem verificação em relógios reais ou emulador. O Xcode suporta o simulador Apple Watch emparelhado com o simulador iPhone — você pode testar o WatchConnectivity sem dispositivos físicos. O Android Studio inclui um emulador Wear OS com suporte para Wearable Data Layer. Casos de teste críticos: perda de conexão durante transferência, bateria baixa, operação simultânea de dois aplicativos companion e instalação sem telefone em relógios independentes.

Publicação de um aplicativo companion no watchOS não requer envio separado para a App Store — o aplicativo está incluído no binário do aplicativo iOS e é automaticamente oferecido para instalação no relógio. No Wear OS, o aplicativo companion é publicado separadamente no Google Play, mas está vinculado ao aplicativo principal através do mesmo pacote. App Group no iOS e sharedUserId no Android permitem que os aplicativos principal e companion usem armazenamento de dados compartilhado.

Perguntas frequentes

Como o Companion App difere de um aplicativo comum no relógio?

O Companion App exige o aplicativo principal instalado no iPhone ou Android para funcionalidade completa. Um aplicativo independente comum no relógio (por exemplo, bússola ou cronômetro) funciona autonomamente sem telefone. O Companion App sincroniza dados com o telefone, exibe notificações e permite ações rápidas, mas sem o telefone perde algumas funções.

Como o WatchConnectivity transfere dados entre iPhone e Watch?

O WatchConnectivity suporta quatro modos: Application Context para transmitir o estado atual cancelando o anterior, File Transfer para arquivos de qualquer tamanho, User Info para dicionários de dados com entrega garantida e Interactive Messaging para comunicação bidirecional em tempo real. Os dados são transmitidos via Bluetooth ou Wi-Fi — o sistema seleciona automaticamente o canal ideal.

O Companion App pode funcionar sem internet?

Sim, um aplicativo companion funciona autonomamente — watchOS e Wear OS armazenam em cache os dados recebidos do telefone. Em relógios com módulo celular, o aplicativo envia solicitações diretamente via eSIM ou LTE. Os dados em cache são exibidos mesmo sem conexão. Quando a conexão é restaurada, o cache é atualizado por sincronização em segundo plano.

Que tipos de aplicativos usam mais frequentemente o Companion App?

As categorias mais populares: rastreadores de fitness com sincronização de treinos, mensageiros para responder mensagens do relógio, navegadores com instruções de direção no pulso, players de música para controle de reprodução, sistemas de pagamento, casa inteligente para controle de dispositivos e monitores médicos para pulso e pressão arterial.

Quanta energia o Companion App consome no relógio?

O Apple Watch oferece até 18 horas de funcionamento com um aplicativo companion ativo em uso padrão. Wear OS — até 24 horas. O WatchConnectivity é otimizado para baixo consumo de energia: a transferência de dados é pausada quando a bateria está baixa e a sincronização em massa é realizada durante o carregamento do relógio.

Resumo

  • Companion App — um aplicativo de relógio que funciona em conjunto com o aplicativo principal no telefone
  • WatchConnectivity — um framework iOS com quatro modos de transferência de dados para Apple Watch
  • Wearable Data Layer — uma API Android para sincronizar com Wear OS via DataItem e MessageClient
  • Operação autônoma — o cache de dados permite trabalhar quando desconectado do telefone
  • Consumo de energia — até 18 horas no Apple Watch, até 24 horas no Wear OS
  • Interface do relógio — interface concisa com elementos grandes e texto mínimo
  • Publicação — watchOS está incluído no binário iOS, Wear OS é publicado separadamente no Google Play

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também