개요

Nearby Connections는 앱이 네트워크 연결과 관계없이 실시간으로 근처 기기를 쉽게 검색하고 연결하며 데이터를 교환할 수 있는 P2P 네트워킹 API입니다.

몇 가지 사용 사례는 다음과 같습니다.

  • 공동작업 화이트보드: 공유 가상 화이트보드에서 주변 참석자와 함께 아이디어를 기록합니다.
  • 로컬 멀티플레이어 게임: 멀티플레이어 게임을 설정하고 근처에 있는 다른 사용자를 초대합니다.
  • 멀티스크린 게임: 휴대전화나 태블릿을 게임 컨트롤러로 사용하여 Android TV와 같이 근처에 있는 대형 화면 Android 기기에 표시되는 게임을 플레이합니다.
  • 오프라인 파일 전송: 네트워크 연결 없이 사진, 동영상 또는 기타 유형의 데이터를 빠르게 공유합니다.

소개

Nearby Connections를 사용하면 완전히 오프라인인 피어 투 피어 방식으로 근처 기기 간에 광고, 탐색, 연결을 할 수 있습니다. 기기 간 연결은 고대역폭, 짧은 지연 시간, 완전 암호화로 빠르고 안전한 데이터 전송을 지원합니다.

이 API의 기본 목표는 간단하고 안정적이며 성능이 우수한 플랫폼을 제공하는 것입니다. 내부적으로 API는 블루투스, BLE, Wi-Fi 기술을 조합하여 사용하며, 각 기술의 장점을 활용하는 동시에 단점을 우회합니다. 이렇게 하면 다양한 플랫폼과 OS 버전에서 블루투스 및 Wi-Fi의 변덕스러운 동작을 효과적으로 추상화하여 개발자가 사용자에게 중요한 기능에 집중할 수 있습니다.

API 개요

API 사용은 연결 전과 연결 후의 두 단계로 나뉩니다.

연결 전 단계에서 광고주는 자신을 광고하고 탐색자는 주변 광고주를 탐색하고 연결 요청을 전송합니다. 검색자에서 광고주로의 연결 요청은 양측이 독립적으로 연결 요청을 수락 (또는 거부)하는 대칭 인증 흐름을 시작합니다.

양측에서 연결 요청을 수락하면 연결이 설정된 것으로 간주되고 기기가 연결 후 단계로 전환되며 이 단계에서 양측은 데이터를 교환할 수 있습니다.

광고 및 탐색

광고주는 다른 검색자에게 표시되며 새 광고주가 발견되거나 손실되면 검색자에게 알림이 전송됩니다.

연결 설정

탐색자가 근처 광고주에 연결하려는 경우 연결을 요청할 수 있습니다.

양측 모두 연결 시작 프로세스에 대한 알림을 받게 되며, 양측 모두 연결을 수락하거나 거부할 수 있습니다.

양측이 모두 응답하면 각 측에 결과가 통보됩니다. 양쪽에서 연결을 수락하면 연결이 설정된 것으로 간주되고 데이터 전송이 시작될 수 있습니다.

데이터 교환

연결이 설정된 후에는 추가 API 사용이 대칭적이므로 더 이상 광고주와 탐색자 간에 구분이 없습니다.

이제 양측이 데이터를 교환할 수 있습니다. 지원되는 페이로드 유형은 세 가지입니다.

  • 바이트: 32k로 제한된 바이트 배열입니다. 메타데이터 또는 제어 메시지와 같은 항목을 전송하는 데 적합합니다.
  • 파일: 모든 크기의 파일입니다. 프로세스 경계 간에 최소한의 복사로 앱에서 네트워크 인터페이스로 전송됩니다.
  • 스트림: 녹음된 오디오/동영상의 경우와 같이 최종 크기를 미리 알 수 없는 상태에서 즉석으로 생성되는 데이터 스트림입니다.

수신자는 새로운 수신 데이터와 진행 상황 업데이트, 취소 또는 실패에 관한 알림을 받습니다.

설정된 연결은 전이중이므로 광고주와 탐색자가 동시에 데이터를 주고받을 수 있습니다.

데이터 수집

Google Play 서비스 Nearby SDK를 사용하면 환경을 개선하기 위해 사용 분석이 수집됩니다.

  • 실적 측정항목: Nearby SDK를 사용하여 기기를 검색하고 연결할 때 검색 및 연결 지연 시간, 안정성, 처리량이 수집됩니다.
  • 기기 정보: 기기 모델, 국가, 빌드 버전, 애플리케이션 패키지 이름이 수집되고 실적 측정항목과 연결되어 지역 및 기기별 슬라이스를 식별합니다.

최종 사용자는 설정 > Google > 사용 및 진단으로 이동하여 이 수집을 허용하거나 거부할 수 있습니다.