---
title: MediaSession
framework: nowplaying
role: symbol
role_heading: Class
path: nowplaying/mediasession
---

# MediaSession

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

## Declaration

```swift
@MainActor class MediaSession<Representable> where Representable : MediaSessionRepresentable
```

## Mentioned in

Publishing media sessions

## Overview

Overview Use a session to represent media playback happening on the current device. The session automatically observes your MediaSessionRepresentable model and syncs changes to the system’s Now Playing interface. Create a session by providing a session representable: let session = MediaSession(myModel) Call requestToBecomeApplicationPrimary() to make this your app’s primary Now Playing session when you want to display playback controls: try await session.requestToBecomeApplicationPrimary()

## Topics

### Initializers

- [init(_:)](nowplaying/mediasession/init(_:).md)

### Instance Properties

- [canBecomeApplicationPrimary](nowplaying/mediasession/canbecomeapplicationprimary.md)
- [id](nowplaying/mediasession/id.md)
- [isApplicationPrimary](nowplaying/mediasession/isapplicationprimary.md)
- [isSystemPrimary](nowplaying/mediasession/issystemprimary.md)

### Instance Methods

- [requestToBecomeApplicationPrimary()](nowplaying/mediasession/requesttobecomeapplicationprimary().md)
- [requestToBecomeSystemPrimary()](nowplaying/mediasession/requesttobecomesystemprimary().md)

## Relationships

### Conforms To

- [Copyable](swift/copyable.md)
- [Escapable](swift/escapable.md)
- [Identifiable](swift/identifiable.md)
- [Observable](observation/observable.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Local sessions

- [Publishing media sessions](nowplaying/publishing-media-sessions.md)
- [MediaSessionRepresentable](nowplaying/mediasessionrepresentable.md)
- [MediaSessionError](nowplaying/mediasessionerror.md)
