모바일 디바이스간 P2P 연결 및 데이터 전송 방법

iOS/Android 모바일 디바이스들 사이에서 P2P 형태로 데이터 전송을 하는 방법에 대해 리서치 할 일이 있어서 알아본 내용을 간단히 공유합니다.

네트웍 타입별 Android/iOS P2P 연결 가능성 체크

  • Bluetooth
    • 애플 MFi인증 디바이스만 iPhone/iPod과 Bluetooth 연결 가능
    • MFi는 apple에서 accessary 제조업체들이 만든 하드웨어를 인증하는 제도 (안드로이드는 인증되지 않음)
  • Bluetooth Low Energy
    • BLE는 애플 MFi인증 제약이 존재하지 않아서 안드로이드/iOS간 연결 가능
    • BLE는 말그대로 저전력으로 설계된 spec이기때문에 전송 속도가 매우 느림
    • iOS는 모두 지원하지만 안드로이드 디바이스별로 지원 스펙이 다름 (제대로 지원안하는 경우도 있음)
    • BLE의 최대 전송속도
  • WiFi
    • 동일 네트워크 라우터에 접속한 디바이스들사이에서 P2P 연결 가능
      • multicast를 지원하는 라우터인경우 mDNS(ex: Apple Bonjour)를 이용하여 자동으로 동일 네트웍상의 디바이스를 찾아 주는 것이 가능
      • 개인적으로 사용하는 office/home wifi가 아닌 WiFi hotspot 같은 공용 라우터의 경우 P2P 연결이 안될 가능성이 높음.
    • 뮤직 서버에서 P2P연결 시작만 중계하는
      • NAT 뒤에 연결된 디바이스들도 연결이 가능하긴 함 UDP 홀펀칭 등의 방식을 사용하면 어느정도 커버가능하긴하지만 100% 연결 보장은 힘듦
  • 참고자료

3rd party frameworks

  • Google Nearby
    • Bluetooth, BLE, WiFi 등의 연결방식을 상황에따라 적절히 조합해서 근처에 있는 device를 찾아서 연결해주는 framework
    • 아래 두가지 API set이 있는데 상황/용도에따라 다르게 사용
    • Message API
      • iOS/Android
      • small payload only through google server (devices do have to be connected to the Internet).
      • 음원전송은 불가능
    • Connection API
      • Android ONLY
      • P2P connection: message, file, stream transfer support
      • 음원전송에 적합
  • http://p2pkit.io
    • 유료 framework
      • $0.01/ MAU
    • Android/iOS 둘다 서포트 하지만 GoogleNearBy 와 동일하게 대역폭한계로 음원전송에는 부적합해보임
      • 20 messages per second and cannot exceed the size of 100KB