<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: 16.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "PushToTalk",
  "identifier" : "/documentation/PushToTalk/PTChannelManager",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Push to Talk"
    ],
    "preciseIdentifier" : "c:objc(cs)PTChannelManager"
  },
  "title" : "PTChannelManager"
}
-->

# PTChannelManager

An object that represents a push-to-talk channel manager.

```
class PTChannelManager
```

## Overview

You must create a channel manager upon launching your app, otherwise the system tears down channels and their ability to receive push notifications. By providing a [`PTChannelRestorationDelegate`](/documentation/PushToTalk/PTChannelRestorationDelegate), an app can rejoin or leave a previously active channel the system knows about. Once the channel resoration process completes, the system provides a [`PTChannelManager`](/documentation/PushToTalk/PTChannelManager) instance.

```swift
// Create a channel manager instance.    
channelManager = try await PTChannelManager.channelManager(delegate: self,
                                                           restorationDelegate: self)
```

Multiple calls to [`channelManager(delegate:restorationDelegate:completionHandler:)`](/documentation/PushToTalk/PTChannelManager/channelManager(delegate:restorationDelegate:completionHandler:)) result in the system returning the same shared instance, so store the channel manager in an instance variable.

## Topics

### Creating a channel manager

[`channelManager(delegate:restorationDelegate:completionHandler:)`](/documentation/PushToTalk/PTChannelManager/channelManager(delegate:restorationDelegate:completionHandler:))

Creates a channel manager with the configuration you specify.

### Inspecting the channel manager

[`activeChannelUUID`](/documentation/PushToTalk/PTChannelManager/activeChannelUUID)

The unique identifier of the active channel for the app.

### Joining and leaving a channel

[`requestJoinChannel(channelUUID:descriptor:)`](/documentation/PushToTalk/PTChannelManager/requestJoinChannel(channelUUID:descriptor:))

Joins a channel with the identifier and descriptor you specify.

[`leaveChannel(channelUUID:)`](/documentation/PushToTalk/PTChannelManager/leaveChannel(channelUUID:))

Leaves a channel with the identifier.

### Setting the transmission mode

[`setTransmissionMode(_:channelUUID:completionHandler:)`](/documentation/PushToTalk/PTChannelManager/setTransmissionMode(_:channelUUID:completionHandler:))

Sets the audio transmission mode for the channel you specify.

### Starting and stopping transmission

[`requestBeginTransmitting(channelUUID:)`](/documentation/PushToTalk/PTChannelManager/requestBeginTransmitting(channelUUID:))

Begins an audio transmission with the channel identifer you specify.

[`stopTransmitting(channelUUID:)`](/documentation/PushToTalk/PTChannelManager/stopTransmitting(channelUUID:))

Stops an audio transmission with the channel identifer you specify.

[`setAccessoryButtonEventsEnabled(_:channelUUID:completionHandler:)`](/documentation/PushToTalk/PTChannelManager/setAccessoryButtonEventsEnabled(_:channelUUID:completionHandler:))

Maps supported accessory button events to actions that begin and end transmission.

### Setting participants

[`setActiveRemoteParticipant(_:channelUUID:completionHandler:)`](/documentation/PushToTalk/PTChannelManager/setActiveRemoteParticipant(_:channelUUID:completionHandler:))

Sets the active remote participant with the channel identifier.

### Setting the channel descriptor

[`setChannelDescriptor(_:channelUUID:completionHandler:)`](/documentation/PushToTalk/PTChannelManager/setChannelDescriptor(_:channelUUID:completionHandler:))

Sets the channel description.

### Setting the service status

[`setServiceStatus(_:channelUUID:completionHandler:)`](/documentation/PushToTalk/PTChannelManager/setServiceStatus(_:channelUUID:completionHandler:))

Sets the service connection status.



---

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)