Visão geral

A Nearby Connections é uma API de rede ponto a ponto que permite que os apps descubram, se conectem e troquem dados com dispositivos por perto em tempo real, independentemente da conectividade de rede.

Alguns exemplos de casos de uso:

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

Introdução

A API Nearby Connections permite a divulgação, a descoberta e as conexões entre dispositivos por perto de maneira totalmente off-line e ponto a ponto. As conexões entre dispositivos têm alta largura de banda, baixa latência e são 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 de alto desempenho. Nos bastidores, a API usa uma combinação de tecnologias Bluetooth, BLE e Wi-Fi, aproveitando os pontos fortes de cada uma e contornando as respectivas fraquezas. Isso abstrai as variações do Bluetooth e do Wi-Fi em várias plataformas e versões de SO, permitindo que os desenvolvedores se concentrem nos recursos que importam para os usuários.

Visão geral da API

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

Na fase de pré-conexão, os Anunciantes se anunciam, enquanto os Descobridores descobrem os Anunciantes próximos e enviam solicitações de conexão. Uma solicitação de conexão de um Descobridor para um Anunciante inicia um fluxo de autenticação simétrica que resulta na aceitação (ou rejeição) independente da solicitação de conexão por ambos os lados.

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

Publicidade e descoberta

Os anunciantes vão ficar visíveis para outros descobridores, que 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.

Ambos os lados serão notificados sobre o processo de início da conexão e terão a oportunidade de aceitar ou rejeitar a conexão.

Depois que os dois lados responderem, cada um vai receber uma notificação com o resultado. Se ambos os lados aceitarem a conexão, ela será considerada estabelecida, e a transferência de dados poderá começar.

Troca de dados

Depois que uma conexão é estabelecida, o uso da API é simétrico, então não há mais distinção entre o anunciante e o descobridor.

Agora, os dois lados podem trocar dados. Há três tipos de payloads compatíveis:

  • Bytes: matrizes de bytes limitadas a 32 mil, que 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 o mínimo de cópias 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 de antemão.

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

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

Coleta de dados

Ao usar o SDK do Google Play Services Nearby, as análises de uso são coletadas para melhorar a experiência.

  • Métricas de performance: a latência de descoberta e conexão, a confiabilidade e a capacidade de processamento são coletadas ao buscar 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 aplicativo são coletados e associados às métricas de performance para identificar fatias regionais e específicas do dispositivo.

Os usuários finais podem permitir ou recusar essa coleta em Configurações > Google > Uso e diagnósticos.