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.