Talk to us
Talk to us

Complete Guide to Apple iOS Callkit in 2023

Complete Guide to Apple iOS Callkit in 2023

Ever wondered how your favorite VoIP apps on iOS deliver such a seamless calling experience? The secret sauce is Apple’s iOS CallKit. This game-changing framework has transformed the world of digital communication, making every call feel as natural and intuitive as a traditional phone call. Dive in to discover the magic behind it!

What is CallKit?

CallKit is an advanced framework introduced by Apple for iOS devices, specifically designed to enhance the calling experience for VoIP services. With the inception of iOS CallKit in 2016, starting with iOS 10, developers received a huge opportunity to integrate their calling services seamlessly with other call-related apps on the system. One of the primary objectives of iOS CallKit is to make calls feel as native to iOS as possible.

This framework completes the gap between traditional phone calls and VoIP calls by providing a native-looking interface. It offers system-level integration features, allowing calls to work harmoniously with modes like Do-Not-Disturb, Mute, and even vibration-only settings. Moreover, CallKit ensures that users can receive calls in both locked and unlocked states, enhancing the overall user experience.

For developers looking to incorporate CallKit into their projects, Apple provides various classes and components, such as CXProvider, CXProviderDelegate, and CXHandle, to facilitate the process. These elements play a pivotal role in actions like receiving incoming calls or initiating outgoing calls. With the right steps and code, integrating iOS CallKit into an app can significantly elevate its functionality and user appeal.

Application Scenarios of iOS CallKit

CallKit can be applied in various scenarios, from personal chats to business meetings. For instance, a business communication app can leverage CallKit to provide a native-like call experience, complete with call holding, muting, and multi-call handling. Similarly, a social networking app can use CallKit to allow users to receive VoIP calls even when the app is in the background, enhancing user engagement.

Features of iOS CallKit

Apple’s iOS CallKit has revolutionized the VoIP calling experience on iOS devices. Here’s a concise overview of its primary features:

  1. Unified User Interface: CallKit offers a native system-calling UI, making VoIP calls indistinguishable from traditional phone calls.
  2. Deep System Integration:
    • Seamless integration with other call-related apps on iOS.
    • Compatibility with system features like Do-Not-Disturb, Mute, and vibration-only modes.
    • Ability to receive calls in both locked and unlocked states.
  3. Enhanced Call Management:
    • Call blocking and caller identification functionalities.
    • Smooth transition between VoIP and regular phone calls.
  4. Customization and Flexibility: Developers can tailor the CallKit interface to match their app’s branding and provide a unique user experience.
  5. Robust Security and Privacy: Designed with user security in mind, CallKit doesn’t access or store call content.
  6. Advanced Development Tools: Apple equips developers with classes and protocols, such as CXProvider and CXHandle, for easy CallKit integration.
  7. PushKit Integration: Ensures apps can receive VoIP call notifications even when they’re not active.

Pros and Cons of iOS CallKit

Pros of iOS CallKit:

  • It allows VoIP calls to appear in the native phone app’s recent and favorites lists, providing a seamless user experience.
  • CallKit also supports call blocking and identification, enabling users to block or identify calls within the app.
  • It integrates with Do-Not-Disturb, Mute, or vibration-only modes, enhancing the user’s control over their calling experience.

Cons of iOS CallKit:

Despite its many advantages, CallKit is not without its drawbacks.

  • It requires a significant amount of code to implement, which can be daunting for beginners.
  • While CallKit provides a native-like call experience, it may not offer the same level of customization as building a custom call UI.
  • CallKit’s functionality can be limited in certain scenarios, such as when the app is in the background or the device is locked.

How to Build a Voice/Video Chat for iOS With the Kit?

If you’re a developer looking to integrate video call functionality into your iOS apps, ZEGOCLOUD CallKit is another excellent option. With this system framework, you can easily integrate video calls into your app and make high-quality video calls with other iOS users.

What is ZEGOCLOUD Callkit?

ZEGOCLOUD is a leading provider of cloud-based communication solutions. It has two efficient methods for you to build video calls. The first is iOS Callkit which is included in the UIKits. This software development kit (SDK) allows developers to add voice and video calling capabilities to their apps, providing a seamless communication experience for users.

Moreover, ZEGOCLOUD has a fully customized video call SDK that gives you complete layout and workflow control.

Features of ZEGOCLOUD Callkit

As shown in the figure, Callkit SDK is responsible for processing audio and video calls for iOS and the logic related to text chat. Include:

  • UI and interaction of the calling module
  • call status management
  • Audio and video data transmission

You only need to implement business-related logic. For example:

  • User login registration
  • Friends List Management
  • Call billing recharge

When to use Callkit SDK

  • Testing Tools In the early market research stage, quickly verify customer needs.
  • MVP Quickly realizes minimal products, demonstrates market demand, and gains investor trust.
  • In-app plugins Added audio and video calling module to improve daily application activities and increase user stickiness.

Steps to Build an iOS Video Chat With ZEGOCLOUD Callkit

If you want to create a video calls app for iOS, incorporating CallKit can provide a seamless and intuitive user experience. Here are the steps you need to follow to build a reliable and high-quality video call app using CallKit on iOS.


  • ZEGOCLOUD developer account – Sign up
  • A Mac computer with video and audio support.
  • Get CallKit appID and appSign
  • Basic understanding of iOS development

Integrate the SDK

Follow the steps below to integrate ZEGOCLOUD CallKit for iOS:

1. Add ZegoUIKitPrebuiltCall as a dependency in your project root directory.

flutter pub add zego_uikit_prebuilt_call

2. Import the SDK

Open main.dart and insert the following codes to import the SDK.

import 'package:zego_uikit_prebuilt_call/zego_uikit_prebuilt_call.dart';

3. Using the ZegoUIKitPrebuiltCall in your project

To set up the Call Kit service for your project, head over to ZEGOCLOUD Admin Console and retrieve your appID and appSign. Next, provide your userID and userName, and generate a callID to initiate your call.

class CallPage extends StatelessWidget {
  const CallPage({Key? key, required this.callID}) : super(key: key);
  final String callID;

  Widget build(BuildContext context) {
    return ZegoUIKitPrebuiltCall(
      appID: yourAppID, // Fill in the appID that you get from ZEGOCLOUD Admin Console.
      appSign: yourAppSign, // Fill in the appSign that you get from ZEGOCLOUD Admin Console.
      userID: 'user_id',
      userName: 'user_name',
      callID: callID,
      // You can also use groupVideo/groupVoice/oneOnOneVoice to make more types of calls.
      config: ZegoUIKitPrebuiltCallConfig.oneOnOneVideoCall() 
        ..onOnlySelfInRoom = () => Navigator.of(context).pop(),

4. Configure your project

Follow the steps below to set up ZEGOCLOUD CallKit for iOS to ensure effective functioning:

1. Add permission

To grant additional permissions, navigate to your_project/ios/Runner/Info.plist, and insert the following code into the dict section:

<string>We require camera access to connect to a call</string>
<string>We require microphone access to connect to a call</string>

2. Configure build

To properly utilize notifications and successful app building, proceed to the Build Settings section, and configure the target app with the following build options.

Run a Demo


Integrating iOS CallKit into your iOS video calling app can significantly impact the overall user experience. Following the steps outlined in this guide, you can develop a robust and efficient video-calling app that leverages the full capabilities of ZEGOCLOUD UIKits. With the right approach, you can create a high-quality video-calling experience for your users. ZEGOCLOUD SDK allows you to drop the full features of video calls into your app.

FAQ about iOS Video Call

Q1: Can any app use iOS CallKit?

Any VoIP app can integrate with CallKit, but the developers need to implement it in their app. This ensures that the app can offer features like call blocking and caller identification.

Q2: Why might some VoIP apps not use CallKit?

While CallKit offers many advantages, some apps might avoid it due to regional restrictions or to maintain a unique interface separate from the native iOS look and feel.

Q3: Does iOS video calling consume a lot of data?

Yes, video calls generally consume a significant amount of data. The exact data usage depends on the duration and quality of the video call. If you are concerned about data usage, it is advisable to make video calls on a Wi-Fi network or use an unlimited data plan.

Q4: What is the Best video call SDK for iOS?

Choosing the right iOS Video Call SDK depends on your specific needs and requirements. ZEGOCLOUD, Agora, Sendbird, G-Core, and MirrorFly are all excellent choices, each offering unique features and capabilities. You can make an informed decision that best suits your app development project.

Read more:

Talk to Expert

Learn more about our solutions and get your question answered.

Talk to us

Take your apps to the next level with our voice, video and chat APIs

Free Trial
  • 10,000 minutes for free
  • 4,000+ corporate clients
  • 3 Billion daily call minutes

Stay updated with us by signing up for our newsletter!

Don't miss out on important news and updates from ZEGOCLOUD!

* You may unsubscribe at any time using the unsubscribe link in the digest email. See our privacy policy for more information.