Preparing your app to be the default calling app
Configure your CallKit or LiveCommunicationKit app so people can set it as the default calling app on their device.
Overview
In iOS and iPadOS 18.2 and later, a person may select an app other than the Phone app or FaceTime to handle calls. A calling app handles tel: URLs the system sends to it. For example, when someone selects your app as the default calling app, tapping on a telephone number in a contact card initiates an attempt to place the call using your app.
If your app places phone calls and you wish to optionally become the default calling app, there are several steps you need to take.
Add the Default Calling App entitlement to your project
Add the com.apple.developer.calling-app entitlement to the .entitlements file in your app’s Xcode project. For instructions on how to add this entitlement, see Default Calling App.
Apply the fallback URL scheme in your app
If starting a VoIP conversation fails, you may wish to have the conversation fall back to the system to handle it. While optional, providing a fallback gives people another opportunity to have the conversation. When you let the conversation fall back to the system, it handles the conversation as a cellular network conversation. To provide a fallback, adopt the telephony: URL scheme as the fallback handler for the scene(_:continue:) delegate callback. For example:
let handle = userActivity.startCallHandle // The `UserActivity` structure the system provides; the `startCallHandle` property is the phone number the system is passing to your app.
var urlComponents = URLComponents()
urlComponents.scheme = "telephony"
urlComponents.path = handle
guard let url = urlComponents.url else { return }
UIApplication.shared.open(url)For more information on VoIP calling related intents, see INStartCallIntent.
Prepare your app for submission to App Store Connect
To submit your app to App Store Connect, your app needs to meet the following criteria:
The
com.apple.developer.calling-appentitlement is in its.entitlementsfile, and it’s set to a value oftrue.The
Info.plistfile has theUIBackgroundModesproperty array and contains an entry with the stringvoip.Your app links to either the CallKit or LiveCommunicationKit frameworks.