---
title: CXProvider
framework: callkit
role: symbol
role_heading: Class
path: callkit/cxprovider
---

# CXProvider

An object that represents a telephony provider.

## Declaration

```swift
class CXProvider
```

## Mentioned in

Making and receiving VoIP calls

## Overview

Overview A CXProvider object is responsible for reporting out-of-band notifications that occur to the system. A VoIP app should create only one instance of CXProvider and store it for use globally. A CXProvider object is initialized with a CXProviderConfiguration object to specify the behavior and capabilities of calls. Each provider can specify an object conforming to the CXProviderDelegate protocol to respond to events, such as the call starting, the call being put on hold, or the provider’s audio session being activated. Subclassing Notes CXProvider is not intended for subclassing.

## Topics

### Creating New Providers

- [init(configuration:)](callkit/cxprovider/init(configuration:).md)

### Setting the Delegate

- [setDelegate(_:queue:)](callkit/cxprovider/setdelegate(_:queue:).md)

### Accessing Provider Attributes

- [configuration](callkit/cxprovider/configuration.md)

### Accessing Pending Transaction and Call Actions

- [pendingTransactions](callkit/cxprovider/pendingtransactions.md)
- [pendingCallActions(of:withCall:)](callkit/cxprovider/pendingcallactions(of:withcall:).md)

### Reporting Calls

- [reportNewIncomingCall(with:update:completion:)](callkit/cxprovider/reportnewincomingcall(with:update:completion:).md)
- [reportNewIncomingVoIPPushPayload(_:completion:)](callkit/cxprovider/reportnewincomingvoippushpayload(_:completion:).md)
- [com.apple.developer.usernotifications.filtering](bundleresources/entitlements/com.apple.developer.usernotifications.filtering.md)
- [reportOutgoingCall(with:startedConnectingAt:)](callkit/cxprovider/reportoutgoingcall(with:startedconnectingat:).md)
- [reportOutgoingCall(with:connectedAt:)](callkit/cxprovider/reportoutgoingcall(with:connectedat:).md)
- [reportCall(with:updated:)](callkit/cxprovider/reportcall(with:updated:).md)
- [reportCall(with:endedAt:reason:)](callkit/cxprovider/reportcall(with:endedat:reason:).md)

### Invalidating a Provider

- [invalidate()](callkit/cxprovider/invalidate().md)

### Handling Errors

- [CXCallEndedReason](callkit/cxcallendedreason.md)
- [CXError](callkit/cxerror.md)
- [CXError.Code](callkit/cxerror/code.md)
- [CXErrorCodeIncomingCallError](callkit/cxerrorcodeincomingcallerror-swift.struct.md)
- [CXErrorCodeIncomingCallError.Code](callkit/cxerrorcodeincomingcallerror-swift.struct/code.md)
- [CXErrorCodeNotificationServiceExtensionError](callkit/cxerrorcodenotificationserviceextensionerror-swift.struct.md)
- [CXErrorDomain](callkit/cxerrordomain.md)
- [CXErrorDomainIncomingCall](callkit/cxerrordomainincomingcall.md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Essentials

- [CXProviderDelegate](callkit/cxproviderdelegate.md)
- [CXProviderConfiguration](callkit/cxproviderconfiguration.md)
- [Making and receiving VoIP calls](callkit/making-and-receiving-voip-calls.md)
- [VoIP calling with CallKit](callkit/voip-calling-with-callkit.md)
- [Preparing your app to be the default calling app](callkit/preparing-your-app-to-be-the-default-calling-app.md)
- [CallKit updates](updates/callkit.md)
