CallKit
Display the system-calling UI for your app’s VoIP services, and coordinate your calling services with other apps and the system.
Mentioned in
Overview
Use CallKit to integrate your calling services with other call-related apps in the system. CallKit provides the calling interface, and you handle the back-end communication with your VoIP service. See Making and receiving VoIP calls for more information.
For incoming and outgoing calls, CallKit displays the same interfaces as the Phone app, giving your app a more native look and feel. CallKit also responds appropriately to system-level behaviors, such as Do Not Disturb.
In addition to handling calls, you can use a Call Directory app extension to provide caller ID information and a list of blocked numbers associated with your service. See Identifying and blocking calls for more information.
Manage user privacy
With a person’s permission, an installed health research app that uses SensorKit entitlements may collect Speech Metrics data while your CallKit app is in use. To prevent this, you can set the SRResearchDataGeneration information property list key to NO.
Become the default calling app
In iOS and iPadOS 18.2 and later, a person may select an app — other than the Phone app or FaceTime — to place calls by default. To make your CallKit or LiveCommunicationKit app support the default calling app setting, see Preparing your app to be the default calling app.
Topics
Essentials
CXProviderCXProviderDelegateCXProviderConfigurationMaking and receiving VoIP callsVoIP calling with CallKitPreparing your app to be the default calling appCallKit updates
Incoming calls
Outgoing calls
Call-related actions
CXActionCXCallActionCXEndCallActionCXPlayDTMFCallActionCXSetGroupCallActionCXSetHeldCallActionCXSetMutedCallActionCXSetTranslatingCallAction
Call information
Caller ID
Identifying and blocking callsCXCallDirectoryProviderCXCallDirectoryExtensionContextCXCallDirectoryExtensionContextDelegateCXCallDirectoryManager