개요

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

사용 사례 예시:

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

소개

Nearby Connections를 사용하면 완전히 오프라인 P2P 방식으로 근처 기기 간 광고, 검색, 연결이 가능합니다. 기기 간 연결은 대역폭이 높고 지연 시간이 짧으며 완전히 암호화되어 빠르고 안전한 데이터 전송이 가능합니다.

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

API 개요

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

연결 전 단계에서 광고주는 자신을 광고하고 검색자는 근처 광고주를 검색하여 연결 요청을 보냅니다. 탐색기에서 광고주로의 연결 요청은 양쪽에서 독립적으로 연결 요청을 수락하거나 거부하는 대칭 인증 흐름을 시작합니다.

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

광고 및 탐색

광고주는 다른 디스커버에 표시되며, 새로운 광고주가 발견되거나 사라지면 디스커버러에게 알림이 전송됩니다.

연결 설정

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

연결 시작 프로세스가 양측에 모두 알림으로 전송되며 양측 모두 연결을 수락하거나 거부할 수 있습니다.

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

데이터 교환

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

이제 양쪽에서 데이터를 교환할 수 있습니다. 지원되는 페이로드에는 3가지 유형이 있습니다.

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

수신자에게 새로운 수신 데이터와 진행 상황 업데이트, 취소 또는 실패가 알림으로 전송됩니다.

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

데이터 수집

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

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

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