<!--
{
  "availability" : [
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "macCatalyst: 27.0.0 -",
    "macOS: 27.0.0 -",
    "tvOS: 27.0.0 -",
    "visionOS: 27.0.0 -",
    "watchOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "NowPlaying",
  "identifier" : "/documentation/NowPlaying",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "Now Playing"
    ],
    "preciseIdentifier" : "NowPlaying"
  },
  "title" : "Now Playing"
}
-->

# Now Playing

Make your app’s media playback controls available on the Lock Screen, Control Center, and connected accessories.

## Overview

The Now Playing framework makes it easy for people to quickly access your app’s media controls across Apple platforms. The Now Playing interface integrates the controls on the Lock Screen, in Control Center, on Apple Watch, and in CarPlay. Use it to publish playback for music, audiobooks, podcasts, movies, TV shows, and other content. You describe your media content and supported commands with an <doc://com.apple.documentation/documentation/Observation/Observable> model, and the framework updates the system whenever your model changes.

![An illustration of a Now Playing media control card showing track and artist information with play, pause, and skip buttons, surrounded by icons representing iPhone, headphones, a car, a speaker, and Apple Vision Pro.](images/com.apple.nowplaying/now-playing-hero@2x.png)

Now Playing supports two kinds of sessions:

- **Local sessions:** Publish playback that happens on the current device. Create a type that conforms to [`MediaSessionRepresentable`](/documentation/NowPlaying/MediaSessionRepresentable) and use [`MediaSession`](/documentation/NowPlaying/MediaSession) to register it with the system. The framework observes your <doc://com.apple.documentation/documentation/Observation/Observable> model and publishes changes to the system as they happen.
- **Remote sessions:** Publish playback that happens on external devices, such as speakers, streaming sticks, or smart TVs. Create an app extension that conforms to [`RemoteMediaSessionExtension`](/documentation/NowPlaying/RemoteMediaSessionExtension) and provide sessions conforming to [`RemoteMediaSessionRepresentable`](/documentation/NowPlaying/RemoteMediaSessionRepresentable). Start remote sessions from your app using [`RemoteMediaSession`](/documentation/NowPlaying/RemoteMediaSession), or from your server using push notifications when your app isn’t running.

> Important: Don’t mix the Now Playing framework with the <doc://com.apple.documentation/documentation/MediaPlayer/MPNowPlayingInfoCenter> and <doc://com.apple.documentation/documentation/MediaPlayer/MPRemoteCommandCenter> APIs from the <doc://com.apple.documentation/documentation/MediaPlayer> framework for local playback. Doing so results in undefined behavior.

## Topics

### Local sessions

[Publishing media sessions](/documentation/NowPlaying/publishing-media-sessions)

Show your app’s media on the Lock Screen and Control Center.

[`MediaSessionRepresentable`](/documentation/NowPlaying/MediaSessionRepresentable)

A protocol that provides content metadata, playback state, and commands for a Now Playing session.

[`MediaSession`](/documentation/NowPlaying/MediaSession)

A local Now Playing session that publishes metadata and commands to the system.

[`MediaSessionError`](/documentation/NowPlaying/MediaSessionError)

Errors that can occur during local session operations.

### Remote sessions

[Publishing remote media sessions](/documentation/NowPlaying/publishing-remote-media-sessions)

Show media from an external device on the Lock Screen and Control Center.

[`RemoteMediaSessionRepresentable`](/documentation/NowPlaying/RemoteMediaSessionRepresentable)

A session that plays remotely, potentially across multiple devices.

[`RemoteMediaSession`](/documentation/NowPlaying/RemoteMediaSession)

A session that manages remote media playback across devices.

[`RemoteMediaSessionExtension`](/documentation/NowPlaying/RemoteMediaSessionExtension)

An app extension that provides remote media sessions.

[`RemoteMediaSessionExtensionConfiguration`](/documentation/NowPlaying/RemoteMediaSessionExtensionConfiguration)

The configuration object for a remote playback extension.

[`RemoteMediaSessionAttributes`](/documentation/NowPlaying/RemoteMediaSessionAttributes)

A type that represents attributes for remote sessions.

[`RemoteMediaSessionError`](/documentation/NowPlaying/RemoteMediaSessionError)

Errors that can occur during remote session operations.

[`MediaDevice`](/documentation/NowPlaying/MediaDevice)

A device that plays media in a remote session.

### Playback

[`MediaPlaybackSnapshot`](/documentation/NowPlaying/MediaPlaybackSnapshot)

A snapshot of playback state and timing for a Now Playing session.

[Content types and metadata](/documentation/NowPlaying/content-types-and-metadata)

Describe the media your app is playing.

[Playback commands](/documentation/NowPlaying/playback-commands)

Declare the playback controls your app supports.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)