How SharePlay Syncs Music on iOS 15 FaceTime
SharePlay in iOS 15 enables multiple users to listen to music simultaneously during a FaceTime call by coordinating playback states across all connected devices in real time. Rather than streaming the audio directly from one device to another through the call's video/audio channel, SharePlay relies on local device playback governed by Apple's GroupActivities framework and AVFoundation coordination protocols. This ensures high-fidelity audio, low bandwidth consumption, and sample-accurate synchronization across all listeners.
The GroupActivities Framework
At the core of SharePlay is Apple’s GroupActivities framework. When a user starts playing music in Apple Music during an active FaceTime session, the framework establishes a shared end-to-end encrypted session between all participants. This framework acts as a signaling channel, managing session membership, shared states, and coordinating actions across devices without routing media streams through FaceTime servers.
Independent Stream Retrieval
Instead of broadcasting a single audio stream from the host's phone, each participant's device independently fetches the audio track directly from Apple Music's content delivery servers. This decentralized approach maintains the highest possible audio quality—including Spatial Audio and Lossless streaming—while preventing degradation caused by call bandwidth limitations. Each user must have an active Apple Music subscription to access the content.
AVPlayerPlaybackCoordinator and Clock Sync
To keep music playing at the exact same millisecond across all
devices, iOS 15 utilizes the AVPlayerPlaybackCoordinator
class within the AVFoundation framework:
- Synchronized Timebase: Devices in the FaceTime call synchronize their internal reference clocks over the network using low-latency time synchronization algorithms.
- Scheduled Playback Commands: When a participant presses play, pauses, or seeks through a track, the initiating device does not simply issue an immediate command. Instead, it broadcasts a future execution timestamp across the GroupActivities session. Every device then schedules the playback action to execute simultaneously when their synchronized clock hits that exact timestamp.
- Buffer Compensation: If a listener experiences network jitter or buffering, the playback coordinator adjusts playback rates slightly or pauses momentarily to ensure all devices seamlessly align once the buffer recovers.
Shared Playback Queue
Queue modifications operate through synchronized state updates. When any listener adds a song to the queue, pauses the music, or skips to the next track, the update is broadcast as a lightweight data payload to all connected devices. The local music players update their local queues to reflect the changes, allowing a collaborative listening experience where any participant has equal control over the shared session.