<!--
{
  "availability" : [
    "iOS: 17.4.0 -",
    "iPadOS: 17.4.0 -",
    "macCatalyst: 17.4.0 -",
    "visionOS: 1.1.0 -",
    "watchOS: 10.4.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "LiveCommunicationKit",
  "identifier" : "/documentation/LiveCommunicationKit/ConversationManager",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "LiveCommunicationKit"
    ],
    "preciseIdentifier" : "s:20LiveCommunicationKit19ConversationManagerC"
  },
  "title" : "ConversationManager"
}
-->

# ConversationManager

An interface for managing and observing VoIP conversations.

```
final class ConversationManager
```

## Overview

Use `ConversationManager` to provide VoIP conversation functionality in your app.
For more information, see [Preparing your app to be the default dialer app](/documentation/LiveCommunicationKit/preparing-your-app-to-be-the-default-dialer-app).

## Topics

### Creating the manager

[`convenience init(configuration: ConversationManager.Configuration)`](/documentation/LiveCommunicationKit/ConversationManager/init(configuration:))

Creates a new conversation manager with a given conversation.

[`let configuration: ConversationManager.Configuration`](/documentation/LiveCommunicationKit/ConversationManager/configuration-swift.property)

The configuration of a conversation manager.

[`struct Configuration`](/documentation/LiveCommunicationKit/ConversationManager/Configuration-swift.struct)

Configuration options for a conversation manager.

### Configuring the manager

[`var conversations: [Conversation]`](/documentation/LiveCommunicationKit/ConversationManager/conversations)

Currently active conversations.

[`var pendingActions: [ConversationAction]`](/documentation/LiveCommunicationKit/ConversationManager/pendingActions)

All unfinished conversation actions.

[`var delegate: (any ConversationManagerDelegate)?`](/documentation/LiveCommunicationKit/ConversationManager/delegate)

The object that acts as the delegate of the conversation manager.

### Managing conversations

[`func perform([ConversationAction]) async throws`](/documentation/LiveCommunicationKit/ConversationManager/perform(_:))

Tells the conversation manager to asynchronously perform actions for a conversation.

[`func invalidate()`](/documentation/LiveCommunicationKit/ConversationManager/invalidate())

Invalidates the conversation manager, ends all conversations, and fails all pending concersation actions.

### Observing conversations

[`func pendingConversationActions(of: ConversationAction.Type, for: Conversation) -> [ConversationAction]`](/documentation/LiveCommunicationKit/ConversationManager/pendingConversationActions(of:for:))

Queries a conversation for pending actions of a specified type.

[`func reportConversationEvent(Conversation.Event, for: Conversation)`](/documentation/LiveCommunicationKit/ConversationManager/reportConversationEvent(_:for:))

Informs the system that an event has occurred and that it needs to update the conversation if necessary.

[`func reportNewIncomingConversation(uuid: UUID, update: Conversation.Update) async throws`](/documentation/LiveCommunicationKit/ConversationManager/reportNewIncomingConversation(uuid:update:))

Informs the system that there’s a new incoming conversation, and the device should begin to ring and present the incoming Conversation UI.

[`class func reportNewIncomingVoIPPushPayload([AnyHashable : Any]) async throws`](/documentation/LiveCommunicationKit/ConversationManager/reportNewIncomingVoIPPushPayload(_:))

Reports a new incoming conversation after your notification service extension decrypts a VoIP request.

## Relationships

### Conforms To

[`Observable`](/documentation/Observation/Observable)

[`Escapable`](/documentation/Swift/Escapable)

[`Copyable`](/documentation/Swift/Copyable)

---

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)