Support peer-to-peer connectivity and the discovery of nearby devices.
- iOS 7.0+
- macOS 10.10+
- UIKit for Mac 13.0+Beta
- tvOS 10.0+
The Multipeer Connectivity framework supports the discovery of services provided by nearby devices and supports communicating with those services through message-based data, streaming data, and resources (such as files). In iOS, the framework uses infrastructure Wi-Fi networks, peer-to-peer Wi-Fi, and Bluetooth personal area networks for the underlying transport. In macOS and tvOS, it uses infrastructure Wi-Fi, peer-to-peer Wi-Fi, and Ethernet.
When working with the Multipeer Connectivity framework, your app must interact with several types of objects:
Session objects (
MCSession) support communication between connected peer devices. Your app creates a session and adds peers to it when peers accept an invitation to connect, and it creates a session when invited to connect by another peer. Session objects maintain a set of peer ID objects that represent the peers connected to the session.
Advertiser objects (
MCNearby) tell nearby peers that your app is willing to join sessions of a specified type. An advertiser object uses a single local peer object to provide information that identifies the device and its user to other nearby devices.
Advertiser assistant objects (
MCAdvertiser) provide the same functionality as advertiser objects, but also provide a standard user interface that allows the user to accept invitations. If you wish to provide your own user interface, or if you wish to exercise additional programmatic control over which invitations are displayed, use an advertiser object directly.
Browser objects (
MCNearby) let your app search programmatically for nearby devices with apps that support sessions of a particular type.
Browser view controller objects (
MCBrowser) provide a standard user interface that allows the user to choose nearby peers to add to a session.
Peer IDs (
MCPeer) uniquely identify an app running on a device to nearby peers.
Discovery Phase and Session Phase
This framework is used in two phases: the discovery phase and the session phase.
During the discovery phase, your app has limited communication with and knowledge of other peers; it has access to the
discovery data that other nearby clients provide, and any context data that other peers provide when inviting it to join a session.
After the user chooses which peers to add to a session, the app invites those peers to join the session. Apps running on the nearby devices can choose whether to accept or reject the invitation, and can ask their users for permission.
If the peer accepts the invitation, the browser establishes a connection with the advertiser and the session phase begins. In this phase, your app can perform direct communication to one or more peers within the session. The framework notifies your app through delegate callbacks when peers join the session and when they leave the session.
If the app moves into the background, the framework stops advertising and browsing and disconnects any open sessions. Upon returning to the foreground, the framework automatically resumes advertising and browsing, but the developer must reestablish any closed sessions.