Visão geral

Nearby Connections é uma API de rede de ponto a ponto que permite que os apps descubram, conectem e troquem dados facilmente com dispositivos próximos em tempo real, independentemente da conectividade de rede.

Alguns exemplos de casos de uso:

  • Lousa interativa colaborativa: anote as ideias dos participantes próximos em uma lousa interativa virtual compartilhada.
  • Jogos multijogador locais: configure um jogo multijogador e convide outros usuários nas proximidades para participar.
  • Jogos multitelas: use um smartphone ou tablet como controle para jogar em dispositivos exibidos em um dispositivo Android de tela grande próximo, como o Android TV.
  • Transferências de arquivos off-line: compartilhe fotos, vídeos ou qualquer outro tipo de dados rapidamente e sem precisar de uma conexão de rede.

Introdução

O Nearby Connections permite publicidade, descoberta e conexões entre dispositivos próximos de maneira totalmente off-line ponto a ponto. As conexões entre dispositivos são de alta largura de banda, baixa latência e totalmente criptografadas para permitir transferências de dados rápidas e seguras.

Um dos principais objetivos dessa API é fornecer uma plataforma simples, confiável e com bom desempenho. Internamente, a API usa uma combinação de tecnologias Bluetooth, BLE e Wi-Fi, aproveitando os pontos fortes de cada uma e ignorando os respectivos pontos fracos. Isso abstrai efetivamente os obstáculos do Bluetooth e Wi-Fi em várias plataformas e versões de SO, permitindo que os desenvolvedores se concentrem nos recursos mais importantes para os usuários.

Visão geral da API

O uso da API é dividido em duas fases: pré-conexão e pós-conexão.

Na fase de pré-conexão, os anunciantes se divulgam, enquanto os Discoverers descobrem anunciantes próximos e enviam solicitações de conexão. Uma solicitação de conexão de um Discoverr para um Anunciante inicia um fluxo de autenticação simétrica que faz com que ambos os lados aceitem (ou rejeitem) independentemente a solicitação de conexão.

Depois que uma solicitação de conexão é aceita pelos dois lados, ela é considerada como estabelecida e os dispositivos entram na fase pós-conexão, em que ambos podem trocar dados.

Publicidade e descoberta

Os anunciantes ficarão visíveis para outras descobertas, e os notificadores serão notificados quando um novo anunciante for encontrado ou perdido.

Como estabelecer conexões

Quando um descobridor quer se conectar a um anunciante próximo, ele pode solicitar uma conexão.

Os dois lados serão notificados do processo de início da conexão e terão a oportunidade de aceitar ou rejeitar a conexão.

Quando ambos os lados responderem, cada um será notificado sobre o resultado. Se ambos os lados aceitaram a conexão, ela é considerada estabelecida, e a transferência de dados pode ser iniciada.

Troca de dados

Depois que uma conexão é estabelecida, o uso adicional da API é simétrico. Portanto, não há mais distinção entre Anunciante e Descoberta.

Os dois lados agora podem trocar dados. Há três tipos de payloads compatíveis:

  • Bytes: matrizes de bytes limitadas a 32k. Elas são boas para enviar itens como metadados ou mensagens de controle.
  • Arquivo: arquivos de qualquer tamanho. Eles são transferidos do app para a interface de rede com cópia mínima entre os limites do processo.
  • Stream: um stream de dados gerado em tempo real, como no caso de áudio/vídeo gravado, sem tamanho final conhecido.

Os destinatários serão notificados sobre novos dados de entrada e atualizações de progresso, cancelamentos ou falhas.

As conexões estabelecidas são de full-duplex, o que significa que anunciantes e descobertores podem enviar e receber dados simultaneamente.

Coleta de dados

Ao usar o SDK do Google Play Services Nearby, a análise de uso é coletada para melhorar a experiência.

  • Métricas de desempenho:a latência de descoberta e conexão, a confiabilidade e a capacidade são coletadas ao procurar e se conectar a dispositivos usando o SDK do Nearby.
  • Informações do dispositivo:o modelo do dispositivo, o país, a versão do build e o nome do pacote do app são coletados e associados às métricas de desempenho para identificar frações regionais e específicas do dispositivo.

Os usuários finais podem permitir ou negar essa coleção em Configurações > Google > Uso e diagnósticos.