Panoramica

Connessioni nelle vicinanze è un'API di networking peer-to-peer che consente alle app di rilevare, connettersi e scambiare facilmente dati con i dispositivi nelle vicinanze in tempo reale, indipendentemente dalla connessione di rete.

Ecco alcuni esempi di casi d'uso:

  • Lavagna collaborativa: annota le idee con i partecipanti vicini su una lavagna virtuale condivisa.
  • Sessioni multiplayer locali: configura un gioco multiplayer e invita altri utenti nelle vicinanze a partecipare.
  • Giochi multischermo: usa uno smartphone o un tablet come controller per giocare ai giochi visualizzati su un dispositivo Android con schermo di grandi dimensioni nelle vicinanze, ad esempio Android TV.
  • Trasferimenti di file offline: condividi foto, video o qualsiasi altro tipo di dati rapidamente e senza bisogno di una connessione di rete.

Introduzione

Connessioni nelle vicinanze consente l'annuncio, il rilevamento e le connessioni tra dispositivi nelle vicinanze in modalità peer-to-peer completamente offline. Le connessioni tra i dispositivi sono a larghezza di banda elevata, a bassa latenza e completamente crittografate per consentire trasferimenti di dati rapidi e sicuri.

Uno degli obiettivi principali di questa API è fornire una piattaforma semplice, affidabile e ad alte prestazioni. In background, l'API utilizza una combinazione di tecnologie Bluetooth, BLE e Wi-Fi, sfruttando i punti di forza di ciascuna e aggirando i rispettivi punti deboli. In questo modo, le complessità di Bluetooth e Wi-Fi vengono astratte in una serie di piattaforme e versioni del sistema operativo, consentendo agli sviluppatori di concentrarsi sulle funzionalità importanti per i loro utenti.

Panoramica dell'API

L'utilizzo dell'API si divide in due fasi: pre-connessione e post-connessione.

Nella fase di pre-connessione, gli inserzionisti si pubblicizzano, mentre gli utenti che li scoprono trovano gli inserzionisti nelle vicinanze e inviano richieste di connessione. Una richiesta di connessione da un Discoverer a un Advertiser avvia un flusso di autenticazione simmetrico che comporta l'accettazione (o il rifiuto) indipendente della richiesta di connessione da parte di entrambi i lati.

Una volta che una richiesta di connessione viene accettata da entrambi i lati, la connessione viene considerata stabilita e i dispositivi entrano nella fase post-connessione, durante la quale entrambi i lati possono scambiare dati.

Pubblicità e scoperta

Gli inserzionisti diventeranno visibili agli altri discoverer e questi ultimi riceveranno una notifica quando viene trovato un nuovo inserzionista o quando un inserzionista viene perso.

Creazione di connessioni

Quando un discoverer vuole connettersi a un advertiser nelle vicinanze, può richiedere una connessione.

Entrambe le parti riceveranno una notifica del processo di avvio della connessione e avranno la possibilità di accettare o rifiutare la connessione.

Una volta che entrambe le parti avranno risposto, ciascuna riceverà una notifica con il risultato. Se entrambe le parti accettano la connessione, questa viene considerata stabilita e può iniziare il trasferimento dei dati.

Scambio di dati

Una volta stabilita una connessione, l'utilizzo successivo dell'API è simmetrico, quindi non esiste più una distinzione tra Advertiser e Discoverer.

Ora entrambe le parti possono scambiarsi dati. Esistono tre tipi di payload supportati:

  • Byte: array di byte limitati a 32k; sono utili per l'invio di elementi come metadati o messaggi di controllo.
  • File: file di qualsiasi dimensione, che vengono trasferiti dall'app all'interfaccia di rete con una copia minima tra i limiti del processo.
  • Stream: un flusso di dati generato in tempo reale, come nel caso di audio/video registrati, senza che la dimensione finale sia nota in anticipo.

I destinatari riceveranno una notifica dei nuovi dati in arrivo e di eventuali aggiornamenti sullo stato di avanzamento, annullamenti o errori.

Le connessioni stabilite sono full-duplex, il che significa che gli inserzionisti e gli utenti che effettuano la scoperta possono inviare e ricevere dati contemporaneamente.

Raccolta dati

Quando utilizzi l'SDK Nearby di Google Play Services, vengono raccolti dati di analisi sull'utilizzo per migliorare l'esperienza.

  • Metriche sul rendimento: la latenza di rilevamento e connessione, l'affidabilità e il throughput vengono raccolti durante la ricerca e la connessione ai dispositivi tramite l'SDK Nearby.
  • Informazioni sul dispositivo: il modello del dispositivo, il paese, la versione della build e il nome del pacchetto dell'applicazione vengono raccolti e associati alle metriche sul rendimento per identificare le sezioni regionali e specifiche del dispositivo.

Gli utenti finali possono consentire o negare questa raccolta andando su Impostazioni > Google > Utilizzo e diagnostica.