
Multipeer Connectivity | Apple Developer Documentation
MultipeerConnectivity 는 주변에 있는 Apple 기기끼리 인터넷 연결 없이도 직접 통신(P2P)를 할 수 있게 해주는 프레임워크이다.
→ SwiftUI에선 이걸 자체적으로 지원하지는 않고 ViewModel이라던지 별도의 객체로 감싸서 사용한다고 한다.
Wi-Fi와 P2P Wi-Fi, Bluetooth를 사용하므로 같은 공간에 있는 기기들끼리 채팅, 게임, 파일 전송 같은 로컬 멀티 플레이 또는 공유 기능을 만들 때 사용한다.
iOS에서는 프레임워크 전송을 위해 Wi-Fi , P2P Wi-Fi, Bluetooth를 사용한다.
macOS 및 tvOS에서는 Wi-Fi, P2P Wi-Fi, 이더넷 을 사용한다.
→ 두 기기가 같은 Wi-Fi 네트워크에 있으면 Wi-Fi를, 그렇지 않으면 P2P Wi-Fi 또는 Bluetooth를 자동으로 선택한다.
→ 즉, 로컬 네트워크를 사용하기 때문에 Info.plist에 NSLocalNetworkUsageDescription 를 선언해야한다.
→ 또한, 이때 내부적으로 Bonjour 프로토콜을 사용하기 때문에 NSBonjourServices 도 선언해야한다.
MCPeerID | Apple Developer Documentation
MCPeerID는 각 기기(기기에서 실행 중인 앱 인스턴스)를 고유하기 식별하는 ID, 혹은 세션 내에서 고유하게 식별하는 클래스를 의미한다.
보통은 사용자의 기기 이름을 사용한다고 한다.
private let peerID = MCPeerID(displayName: UIDevice.current.name)
MCSession | Apple Developer Documentation
연결된 피어들 간의 실제 데이터 송수신을 담당하는 세션 객체이다.
MCSession을 통해 메세지나 데이터 스트림, 리소스를 전송할 수 있다.