<!--
{
  "availability" : [
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "macCatalyst: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AVSystemRouting",
  "identifier" : "/documentation/AVSystemRouting/AVSystemRouteSession-gp78/start()",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "AVSystemRouting"
    ],
    "preciseIdentifier" : "s:15AVSystemRouting0A12RouteSessionC5startAA0ac5MediaD0CyYaKF"
  },
  "title" : "start()"
}
-->

# start()

Starts the session and initiates media playback on the remote device.

```
final func start() async throws -> AVSystemRouteMediaSession
```

## Return Value

An [`AVSystemRouteMediaSession`](/documentation/AVSystemRouting/AVSystemRouteMediaSession-98ioq) for communicating with the remote device.
Access its [`dataChannel`](/documentation/AVSystemRouting/AVSystemRouteMediaSession-98ioq/dataChannel) property to send and receive
data between your app and the remote application. Access its [`playbackControl`](/documentation/AVSystemRouting/AVSystemRouteMediaSession-98ioq/playbackControl) property to send and receive
playback commands between your app and the remote application.
For [`AVSystemRoute.LaunchMode.player`](/documentation/AVSystemRouting/AVSystemRoute-5s2um/LaunchMode/player), [`dataChannel`](/documentation/AVSystemRouting/AVSystemRouteMediaSession-98ioq/dataChannel) is `nil`.

## Discussion

Call this function to begin the playback session after adding it to an [`AVSystemRoute`](/documentation/AVSystemRouting/AVSystemRoute-5s2um). The
session uses the URL and launch mode specified during initialization to start playback on
the remote device.

When using [`AVSystemRoute.LaunchMode.application`](/documentation/AVSystemRouting/AVSystemRoute-5s2um/LaunchMode/application), your app must declare supported protocol
identifiers in the `MDESupportedProtocols` key in your `Info.plist` file. These
identifiers enable the system to establish communication between your app and its counterpart
on the remote device.

After a successful launch with [`AVSystemRoute.LaunchMode.application`](/documentation/AVSystemRouting/AVSystemRoute-5s2um/LaunchMode/application), the returned
[`AVSystemRouteMediaSession`](/documentation/AVSystemRouting/AVSystemRouteMediaSession-98ioq) provides access to a [`dataChannel`](/documentation/AVSystemRouting/AVSystemRouteMediaSession-98ioq/dataChannel) and a [`playbackControl`](/documentation/AVSystemRouting/AVSystemRouteMediaSession-98ioq/playbackControl).
Use these objects to send playback commands, state updates, or custom messages between your
app and the remote application.

Report playback metadata to `MPNowPlayingInfoCenter` to ensure the system displays accurate
information about the current media across a person’s devices.

> Throws: An ``doc://com.apple.avsystemrouting/documentation/AVSystemRouting/AVSystemRoutingError-19zkj`` with code ``doc://com.apple.avsystemrouting/documentation/AVSystemRouting/AVSystemRoutingError-7miya/Code-swift.enum/connectionFailed``
> if the launch fails (for example, if the remote device is unreachable
> or the session is not added to a route).

> Important: Call ``doc://com.apple.avsystemrouting/documentation/AVSystemRouting/AVSystemRouteSession-gp78/stop()`` when playback ends to properly clean up the remote session.

---

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)